Appearance
异常处理
⭐⭐⭐⭐⭐
本项目使用的异常处理方式,通过在 src/filters/http-execption 中封装的全局异常过滤器,所有报错都将返回统一的数据结构。
主动报错
包括用户未登录、权限报错、404、参数异常、业务逻辑判断后抛出的异常等等...
例如:404错误 
我们在业务代码中经常需要判断条件不成立时返回提示信息,Nest 采用抛出异常的方式来终止代码执行,同时返回报错信息:
ts
import { InternalServerErrorException } from '@nestjs/common'
throw new InternalServerErrorException('该标题已存在')
Nest 提供了一些基础的 HTTP 异常类:
| 错误代码 | 名称 | 说明 |
|---|---|---|
| 400 | BadRequestException | 服务器不理解客户端的请求,未做任何处理 |
| 401 | UnauthorizedException | 用户未提供身份验证凭据,或者没有通过身份验证 |
| 403 | ForbiddenException | 用户通过了身份验证,但是不具有访问资源所需的权限 |
| 404 | NotFoundException | 请求的资源不存在,或不可用 |
| 406 | NotAcceptableException | 不可接受 |
| 408 | RequestTimeoutException | 请求超时 |
| 409 | ConflictException | 冲突 |
| 410 | GoneException | 所请求的资源已从这个地址转移,不再可用 |
| 413 | PayloadTooLargeException | 负载过大 |
| 500 | InternalServerErrorException | 客户端请求有效,服务器处理时发生了意外 |
| 501 | NotImplementedException | 未实现 |
| 503 | ServiceUnavailableException | 服务器无法处理请求,一般用于网站维护状态 |
| 504 | GatewayTimeoutException | 网关超时 |
被动报错
程序执行过程中发生的意料之外的报错,例如:数据库报错、服务器异常等...除了主动报错外剩余都是被动报错。
通过判断报错方式不为 HttpException 类来确定发生的是被动报错,返回数据的 message 字段内以 Service Error: 开头。
例如:数据库错误 
