服务端之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.pswp.cn/news/917276.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据链路层、NAT、代理服务、内网穿透

目录 一. 以太网 以太网帧格式 二. MAC地址 三. MTU 四. ARP协议 五. NAT NAPT 六. 代理服务器 正向代理 反向代理 七. 内网穿透 八. 内网打洞 一. 以太网 • "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内 容, 也包含了一些物理层…

Rust在CentOS 6上的移植

Rust已不支持Cent OS 6 rhel是Redhat 发布的Red Hat Enterprise Linux的简称,使用rhel源代码编译的CentOS,最新的版本是CentOS 7,于2024年停止支持。而更古老的CentOS 6,则在2020年就已经结束了。 而面对如此老旧的系统&#xf…

C++音视频开发:基础面试题

音视频领域技术门槛高,学习资料稀缺,体系化书籍和开发工具有限,新手入门困难。音视频开发涉及众多任务:音频(采集、编解码、降噪等)、视频(采集、编解码、图像处理)、实时传输&#…

C++刷题 - 7.27

贪心算法的详细逻辑这个问题的最优解可以用 贪心算法 在 O(N) 时间 内解决。它的核心思想是:每次操作尽可能覆盖最长的连续非零区间,并通过数学分析发现:最小操作次数等于所有“上升台阶”的高度差之和。1. 直观理解假设 steps [1, 2, 3, 2,…

音频3A处理简介之AGC(自动增益控制)

在音频通话和视频会议中,音频自动增益控制AGC模块的主要作用:• 稳定音频信号的输出电平。无论麦克风采集信号的强弱(如用户离麦克风远近程度不同),尽可能保证音频采集模块的输出音量保持相对一致,不会偏大…

web前端打包apk包

我用的是HBuilder工具,可视化更便捷,目前我这操作的apk包是不需要上架的,所以跟实际需要上架的可能还有些出入 首先先新建个项目,选择5App模式 把目前需要打包的内容上传到服务器,我们以嵌套的形式进行打包,找到index.…

Ansible提权sudo后执行报错

1.问题 配置了sudo提权信息后,执行ansible-play报错,报错信息如下:2.原因 sudo没有执行**/bin/sh的权限,而ansible脚本中依赖/bin/sh**,所以报错了: 查看日志sudo tail -f /var/log/secure3.解决方式 修改*…

.NET报表控件ActiveReports发布v19.0——正式兼容 .NET 9

ActiveReports 是一款专注于 .NET 和 .NET Core 平台的报表控件。通过拖拽式报表设计器,可以快速地设计 Excel表格、Word文档、图表、数据过滤、数据钻取、精准套打等类型报表,全面满足 WinForm、ASP.NET、ASP.NET MVC、WPF 平台中各种报表的开发需要。同…

SCI论文选词炼句

标准句子不能啰嗦;词不能有问题,得是SCI中经常出现的,符合上下文的。SCI论文中常出现的摸棱两可的词单词涵义例子Architecture指 整体系统设计方案,如网络层次结构、模块组合、激活函数选择等深度学习模型架构Structure更泛泛&…

Qt deleteLater 延迟删除原理

deleteLater 调用 事件发送 void QObject::deleteLater() {QCoreApplication::postEvent(this, new QDeferredDeleteEvent()); }首先该对象继承QObject调用deleteLater, 内部会发送删除事件QCoreApplication::postEvent(this, new QDeferredDeleteEvent()) 到事件循…

TypeScript SDK 升级:通过 Upload Relay 赋能更多应用

自 3 月主网上线以来,Walrus 开发者社区持续展现出强劲的发展势头: 当前 Walrus 已存储超 758 TB 数据,为数百个项目提供支持。在 2025 年 6 月举办的 Sui Overflow 黑客松上,Walrus 成为最受欢迎的数据层。该赛事共收到 599 个项…

C#线程同步(二)锁

目录 1.lock 2.Monitor 3.锁的其它要注意的问题 3.1同步对象的选择 3.2什么时候该上锁 3.3锁和原子性 3.4嵌套锁 3.5 死锁 3.6 性能 4.Mutex 5.Semaphore 1.lock 让我们先看一段代码: class ThreadUnsafe {static int _val1 1, _val2 1;static void G…

鸿蒙智能居家养老系统构思(续二)—— 适老化烹饪中心详细构思

一、背景在“写给华为鸿蒙智家 —— 智能居家养老系统构思”一文中,结合对居家养老的理解及个人体验,提出了基于鸿蒙OS实现居家养老系统的粗略构思。其中包含“吃得好”。当老人到了不能随性外出活动、只能在家消耗时光时,除了一些看看电视、…

高斯透镜公式(调整镜头与感光元件之间的距离时,使得不同距离的物体在感光元件上形成清晰的影像)

当使用定焦镜头时,仍然可以调整镜头与感光元件(或胶片)之间的距离时,使得不同距离的物体在感光元件上形成清晰的影像。对此可以用高斯透镜公式进行解释: 一、透镜成像的基本原理 在光学中,一个基本的公式是…

预过滤环境光贴图制作教程:第三阶段 - GGX 分布预过滤

核心目标 GGX 分布是 PBR 中模拟粗糙表面高光反射的主流模型,其核心是通过统计分布描述微表面的朝向概率。本阶段的目标是: 基于第一阶段生成的环境图集,预计算 6 个级别的 GGX 过滤结果(对应不同粗糙度); 使用蒙特卡洛采样(Monte Carlo Sampling)加速 GGX 卷积计算;…

Spring框架与AutoCAD结合应用

什么是AutoCAD? AutoCAD简介 AutoCAD是由美国Autodesk公司开发的计算机辅助设计(CAD)软件,广泛应用于建筑、工程、制造、产品设计等领域。它支持2D绘图和3D建模,提供精确的图形工具和自动化功能,帮助用户高效创建技术图纸和模型。 主要功能 2D绘图:提供直线、圆弧、多…

Java 学习笔记:常用类、String 与日期时间处理

作为一名名 Java 初学者,最近在学习过程中整理了一些关于常用类、String 类以及日期时间处理的知识点。这些内容是 Java 基础中的重点,也是日常编程练习中频繁用到的工具,掌握它们能让我们在写代码时更加得心应手。今天把这些笔记分享出来&am…

Android常用的adb和logcat命令

ADB ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令&…

重学JS-001 --- JavaScript算法与数据结构(一)JavaScript 基础知识

文章目录 变量 变量命名规则 变量命名 let vs const 变量使用范围 赋值 = 控制台输出 运算符 ++ -- == === !== 注释 转义字符 数据类型 7种 原始数据类型 1. string​​ 2. number​​ 3. ​​boolean​​ 4. null​​ 5. undefined​​ 6. ​​symbol​​(ES6 新增) 7. big…

MySQL数据闪回工具my2sql的使用

场景: 当你或者其它人员误操作数据库不小心删除或者更新了一批数据,但是是当时又没事先备份时,你可以 用这个 my2sql工具快速帮你找回数据。就是如此的丝滑。但是要注意的是只限于dml语句,所以我们在操作数据库前必需先备份哦&…