news 2026/9/26 2:25:23

服务端之nestJS常用异常类及封装自定义响应模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
服务端之nestJS常用异常类及封装自定义响应模块

MENU

  • 前言
  • 常用异常类(由@nestjs/common提供,一)
  • 常用异常类(由@nestjs/common提供,二)
  • 示例
  • 自定义异常(可选)
  • 自定义响应模块

前言

在NestJS中,@nestjs/common提供了大量的内置异常类,主要用于在控制器、服务等层抛出特定的HTTP错误响应。


常用异常类(由@nestjs/common提供,一)

序号异常类状态码说明
01BadRequestException400客户端请求参数错误、验证失败
02UnauthorizedException401未授权,常用于认证失败(账号/密码错误、token无效等)
03ForbiddenException403无权限访问(即使已认证)
04NotFoundException404找不到资源(如用户不存在)
05MethodNotAllowedException405不允许的请求方法
06NotAcceptableException406请求格式不可接受(比如响应类型不被支持)
07RequestTimeoutException408请求超时
08ConflictException409资源冲突(如重复注册、唯一索引冲突)
09GoneException410资源已被永久删除
10PayloadTooLargeException413请求体过大(文件上传)
11UnsupportedMediaTypeException415不支持的媒体类型(如上传类型错误)
12UnprocessableEntityException422语义错误、验证失败(用于复杂验证)
13InternalServerErrorException500服务端错误
14NotImplementedException501接口未实现
15BadGatewayException502网关错误
16ServiceUnavailableException503服务不可用(服务器维护、宕机等)
17GatewayTimeoutException504网关超时

常用异常类(由@nestjs/common提供,二)

序号异常类状态码说明使用场景示例
01BadRequestException400客户端请求参数错误、验证失败表单必填字段缺失、参数格式不正确、验证码错误
02UnauthorizedException401未授权,常用于认证失败登录失败(账号/密码错误)、Token 无效或过期
03ForbiddenException403无权限访问(即使已认证)用户已登录,但没有访问某个资源的权限,例如普通用户访问管理员接口
04NotFoundException404找不到资源查询用户、文章或其他资源不存在
05MethodNotAllowedException405不允许的请求方法接口只允许 POST,但用户使用 GET 请求
06NotAcceptableException406请求格式不可接受客户端请求Accept: application/xml,但服务器只返回 JSON
07RequestTimeoutException408请求超时客户端长时间未发送完整请求数据,服务器关闭连接
08ConflictException409资源冲突重复注册账号、邮箱已存在、更新资源版本冲突
09GoneException410资源已被永久删除某条数据已被删除且不可恢复,例如已注销的用户账户
10PayloadTooLargeException413请求体过大上传文件过大或一次性发送的数据超过服务器限制
11UnsupportedMediaTypeException415不支持的媒体类型客户端上传image/gif,服务器只支持image/png
12UnprocessableEntityException422语义错误、验证失败表单验证通过,但逻辑上不允许,例如生日大于当前日期
13InternalServerErrorException500服务端错误数据库异常、第三方服务报错、未捕获异常
14NotImplementedException501接口未实现客户端调用了服务器未开发的接口
15BadGatewayException502网关错误服务器作为代理请求上游服务失败,例如 Nginx 访问后端接口失败
16ServiceUnavailableException503服务不可用服务器维护或宕机、负载过高无法处理请求
17GatewayTimeoutException504网关超时服务器作为代理请求上游服务超时未响应

示例

import{BadRequestException,UnauthorizedException,NotFoundException,ConflictException,}from'@nestjs/common';if(!user)thrownewNotFoundException('用户不存在');if(!isPasswordValid)thrownewUnauthorizedException('账号或密码错误');if(emailAlreadyUsed)thrownewConflictException('该邮箱已被注册');if(!dto.name)thrownewBadRequestException('用户名不能为空');

自定义异常(可选)

可以继承HttpException自定义

import{HttpException,HttpStatus}from'@nestjs/common';thrownewHttpException('自定义错误信息',HttpStatus.BAD_REQUEST);

封装成一个类

exportclassCustomExceptionextendsHttpException{constructor(){super('这是一个自定义异常',HttpStatus.I_AM_A_TEAPOT);}}

自定义响应模块

敬请期待…

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 1:29:31

Python—1、基础篇

Python入门1、概念简介2、Python开发2.1、字符集2.2、Python语法2.2.1、基本规范2.2.2、数据类型2.2.3、运算符2.2.4、逻辑控制2.2.5、转义字符基础配置: 1)Python开发IDE为VScode; 2)Python版本为 3.7.8; Python编码…

作者头像 李华
网站建设 2026/9/20 14:52:44

OBLITERATUS:解锁大模型无限潜力

GitHub 平台功能丰富,涵盖 AI 代码创作、开发者工作流程等多方面。而 OBLITERATUS 作为先进开源工具包,能消除大语言模型拒绝行为,还推动科研发展。GitHub 功能全景GitHub 提供了全面的平台功能,在 AI 代码创作方面,有…

作者头像 李华
网站建设 2026/9/23 18:37:10

软件测试经典面试题,助你面试加分

进入金三银四,很多小伙伴有被动跳槽的打算,所以更新一些经典的软件测试面试题,希望能帮到大家! 一 时间紧迫的情况下,如何做好测试工作? 对需求要明确,对需求的优先级也要明确,在项…

作者头像 李华
网站建设 2026/9/24 13:29:44

Windows 10 下安装 Docker Desktop

安装连接:https://hub.docker.com/editions/community/docker-ce-desktop-windows/需要提前打开Hyper - V安装后重启:在任务栏里看见Docker的icon:命令行docker version,看到如下输出:Client: Docker Engine - Communi…

作者头像 李华
网站建设 2026/9/23 6:37:00

Spring原理

1.Bean的作用域和生命周期 2.Spring自动装配的流程 Bean的作用域 作用域是啥? 作用域知道是Bean在Spring框架中的某种行为模式,比如单例模式作用域表示Bean在spring中只有一份,是全局共享的,只要有一个人修改,其他…

作者头像 李华
网站建设 2026/9/23 14:27:25

STL中string的额外操作

构造string的其他方法string s1; string s2(s1); string s2s1; string s3("value"); string s3"value"; string s4(n,c); //把s4初始化为由连续n个字符c组成的串 除了以上构造函数和顺序容器相同的构造函数外,string类型还支持另外三个构造函…

作者头像 李华