MENU
- 前言
- 常用異常類(由@nestjs/common提供)
- 示例
- 自定義異常(可選)
- 自定義響應模塊
前言
在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 網關超時
示例
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);}
}
自定義響應模塊
敬請期待…