【Nestjs学习日记】抛出异常

作者:markzzw 时间:2024-1-29

线上代码:CodeSandbox

Github:zhangzewei/nest-learning-tutorial

在应用程序开发中,抛出异常是一种常见的处理错误和异常情况的方式。异常能够帮助我们识别和处理问题,提高应用程序的可靠性和可维护性。在NestJS中,我们可以利用异常机制来处理各种错误情况。

本篇【NestJS学习日记】将重点探索在NestJS中如何抛出异常。我们将学习如何创建自定义的异常类,以及如何在适当的地方抛出这些异常。NestJS提供了丰富的异常类和异常处理机制,使我们能够灵活地处理应用程序中的各种错误情况。

在NestJS中,我们可以通过创建自定义的异常类来描述特定的错误情况。这些异常类可以包含自定义的错误消息、错误代码和其他相关信息。通过抛出这些异常,我们可以在应用程序的各个地方标识和处理特定的错误情况。

NestJS还提供了一系列内置的异常类,用于处理常见的错误情况,如HTTP请求错误、数据库操作错误等。我们可以使用这些内置的异常类,或者根据需要进行扩展和自定义。

在接下来的文章中,我们将深入研究在NestJS中如何抛出异常,包括创建自定义异常类、抛出异常的方式和时机等。通过学习NestJS的异常机制,我们将能够更好地管理和处理应用程序中的错误情况,提高应用程序的可靠性和可维护性。让我们一起开始这个令人兴奋的学习之旅,掌握NestJS中抛出异常的技能!

后端代码错误 500

json 复制代码
{
  "statusCode": 500,
  "message": "Internal server error"
}

这段网络返回,相信前端同学看到了会说一句,"后端报错了,跟前端没关系"。在 nestjs 中,只需要在代码中抛出一个报错,就会直接返回这个给到前端。

Standard Exceptions

ts 复制代码
throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);

Nestjs 提供了标准的异常抛出,并且提供了很多的 http status 的定义,这样就不需要记特定的错误代码,只需要找到对应的文字即可。

ts 复制代码
export declare enum HttpStatus {
    CONTINUE = 100,
    SWITCHING_PROTOCOLS = 101,
    PROCESSING = 102,
    EARLYHINTS = 103,
    OK = 200,
    CREATED = 201,
    ACCEPTED = 202,
    NON_AUTHORITATIVE_INFORMATION = 203,
    NO_CONTENT = 204,
    RESET_CONTENT = 205,
    PARTIAL_CONTENT = 206,
    AMBIGUOUS = 300,
    MOVED_PERMANENTLY = 301,
    FOUND = 302,
    SEE_OTHER = 303,
    NOT_MODIFIED = 304,
    TEMPORARY_REDIRECT = 307,
    PERMANENT_REDIRECT = 308,
    BAD_REQUEST = 400,
    UNAUTHORIZED = 401,
    PAYMENT_REQUIRED = 402,
    FORBIDDEN = 403,
    NOT_FOUND = 404,
    METHOD_NOT_ALLOWED = 405,
    NOT_ACCEPTABLE = 406,
    PROXY_AUTHENTICATION_REQUIRED = 407,
    REQUEST_TIMEOUT = 408,
    CONFLICT = 409,
    GONE = 410,
    LENGTH_REQUIRED = 411,
    PRECONDITION_FAILED = 412,
    PAYLOAD_TOO_LARGE = 413,
    URI_TOO_LONG = 414,
    UNSUPPORTED_MEDIA_TYPE = 415,
    REQUESTED_RANGE_NOT_SATISFIABLE = 416,
    EXPECTATION_FAILED = 417,
    I_AM_A_TEAPOT = 418,
    MISDIRECTED = 421,
    UNPROCESSABLE_ENTITY = 422,
    FAILED_DEPENDENCY = 424,
    PRECONDITION_REQUIRED = 428,
    TOO_MANY_REQUESTS = 429,
    INTERNAL_SERVER_ERROR = 500,
    NOT_IMPLEMENTED = 501,
    BAD_GATEWAY = 502,
    SERVICE_UNAVAILABLE = 503,
    GATEWAY_TIMEOUT = 504,
    HTTP_VERSION_NOT_SUPPORTED = 505
}

自定义异常

对 Nestjs 的 HttpException 进行封装就可以自己定你想要的异常抛出类。

Nestjs 也内置了很多自定义异常提供使用。

总结

以上就是 Nestjs 中抛出异常的方法,包括了 代码异常抛出,标准异常抛出和自定义异常抛出。

相关推荐
林太白1 小时前
js-var和let以及const区别
前端·面试
看谷秀1 小时前
arkts-10 实战
前端·arkts
范小兵1 小时前
# DevEco CLI实战:鸿蒙App「至客」从0开发到正式上架
前端·harmonyos
梦醒沉醉1 小时前
7、表达日期和时间(前朝遗老Date)
javascript
半生过往2 小时前
前端工程师学习智能体开发(一)
前端·学习·状态模式
白雾茫茫丶2 小时前
Vibecoding 一个主题切换动画库:13 种揭幕方式
前端·vue.js·react.js
计算机魔术师2 小时前
谷歌宣布 TPU 互联架构支持 100 万芯片规模,电力供应成 AI 基建核心瓶颈
前端
雪芽蓝域zzs2 小时前
第四十九节:TagsView 右键菜单(带三角箭头)给每个 tag 增加**鼠标右键菜单**(右键标签弹出:关闭、关闭其他、关闭全部)
前端·javascript·vue.js
এ慕ོ冬℘゜2 小时前
从零开发移动端医院挂号页面:适配、交互与前端实现详解
前端·javascript
宁渡AI大模型2 小时前
AI 全栈面试新趋势:Vibe Coding、前端、Java 后端高频面试题深度解析|河南宁渡科技有限公司编程教程
java·javascript·人工智能·python·ai大模型