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


前言

在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);
  }
}

自定义响应模块

敬请期待…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值