当前位置: 首页 > news >正文

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

MENU

  • 前言
  • 常用异常类(由@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网关超时

示例

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自定义

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

封装成一个类

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

自定义响应模块

敬请期待…

http://www.dtcms.com/a/309528.html

相关文章:

  • 无人机上的 “气象侦察兵”:无人机用气象仪
  • 在线教程丨全球首个 MoE 视频生成模型!阿里 Wan2.2 开源,消费级显卡也能跑出电影级 AI 视频
  • linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
  • 从 0 到 1 认识 Spring MVC:核心思想与基本用法(下)
  • Android使用MediaProjectionManager获取游戏画面和投屏
  • Apache RocketMQ 中 Consumer(消费者)的详细说明
  • Git基础命令大全
  • python-异常(笔记)
  • 力扣热题100---------206.反转链表
  • Java 学习笔记:常用类、String 与日期时间处理
  • 对于前端闭包的详细理解
  • 【数据结构与算法】21.合并两个有序链表(LeetCode)
  • Redis内存淘汰机制
  • 32. flex 的子元素可以浮动吗
  • RLHF-V原论文阅读
  • RabbitMQ-镜像队列(Mirrored Queues)
  • Springboot 配置 doris 连接
  • 阿里智能AI框架Playground,即学即用
  • 数据驱动下的物业满意度升级:国标调查的精准赋能
  • 自动驾驶的未来:多模态传感器钻机
  • javascript中call、apply 和 bind 的区别详解
  • Inheritance
  • 什么是链游
  • Java:高频面试知识分享2
  • vue+cesium+geoserver跨域问题
  • 计算机组成原理2-2:进位计数制及其数据之间的相互转换
  • ubuntu 镜像克隆
  • React + ts + react-webcam + CamSplitter 实现虚拟摄像头解决win摄像头独占的问题
  • Java 22 新特性解析与代码示例
  • leecode42 接雨水