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


前言

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


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

序号 异常类 状态码 说明
01 BadRequestException 400 客户端请求参数错误、验证失败
02 UnauthorizedException 401 未授权,常用于认证失败(账号/密码错误、token无效等)
03 ForbiddenException 403 无权限访问(即使已认证)
04 NotFoundException 404 找不到资源(如用户不存在)
05 MethodNotAllowedException 405 不允许的请求方法
06 NotAcceptableException 406 请求格式不可接受(比如响应类型不被支持)
07 RequestTimeoutException 408 请求超时
08 ConflictException 409 资源冲突(如重复注册、唯一索引冲突)
09 GoneException 410 资源已被永久删除
10 PayloadTooLargeException 413 请求体过大(文件上传)
11 UnsupportedMediaTypeException 415 不支持的媒体类型(如上传类型错误)
12 UnprocessableEntityException 422 语义错误、验证失败(用于复杂验证)
13 InternalServerErrorException 500 服务端错误
14 NotImplementedException 501 接口未实现
15 BadGatewayException 502 网关错误
16 ServiceUnavailableException 503 服务不可用(服务器维护、宕机等)
17 GatewayTimeoutException 504 网关超时

示例

javascript 复制代码
import {
  BadRequestException,
  UnauthorizedException,
  NotFoundException,
  ConflictException,
} from '@nestjs/common';

if (!user) throw new NotFoundException('用户不存在');
if (!isPasswordValid) throw new UnauthorizedException('账号或密码错误');
if (emailAlreadyUsed) throw new ConflictException('该邮箱已被注册');
if (!dto.name) throw new BadRequestException('用户名不能为空');

自定义异常(可选)

可以继承HttpException自定义

javascript 复制代码
import { HttpException, HttpStatus } from '@nestjs/common';

throw new HttpException('自定义错误信息', HttpStatus.BAD_REQUEST);

封装成一个类

javascript 复制代码
export class CustomException extends HttpException {
  constructor() {
    super('这是一个自定义异常', HttpStatus.I_AM_A_TEAPOT);
  }
}

自定义响应模块

敬请期待...

相关推荐
wno7042 天前
node.js中使用jquery
前端·node.js·jquery
damoluomu2 天前
Node 的 Headless 出厂没有前台,Java 的 Headless 是从门户里长出来的
java·开发语言·node.js
Dumbness2 天前
一个手机号验证码登录接口的五个坑:无限发码、无限试码,传个数字就让 Express 进程退出
node.js·express
怒放的生命19912 天前
本地用 pnpm 省磁盘,团队继续用 npm:极简实践
前端·npm·node.js
Hone3 天前
我把「自动发文章到掘金」做成了一个 Agent 技能:juejin-skills
node.js·ai编程·前端工程化
Dumbness4 天前
二十行手写的 SKILL.md 头部解析,遇到 YAML 的折叠写法、单引号和嵌套键就读错:和 js-yaml 逐条对照
node.js·ai编程
只睡四小时4 天前
MCP 弃用 SSE?Node 分帧漏 81.7% 事件
node.js·webassembly·实时通信·mcp·streamable http
hey you~4 天前
个体户门店办理400电话,如何对接订单系统实现来电弹窗
node.js·webhook·400电话·门店数字化·来电弹窗·订单系统对接
YIAN6 天前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm