错误处理
nest
内置的异常层负责处理整个应用程序中的所有抛出的异常。当捕获到未处理的异常时,最终用户将收到友好的响应。
开箱即用,此操作由内置的全局异常过滤器执行,该过滤器处理类型
HttpException
(及其子类)的异常。每个发生的异常都
由全局异常过滤器处理
,
当这个异常无法被识别时
(
既不是
HttpException
也不是继承的类
HttpException ) ,
用户将
收到以下
JSON
响应
:
{"statusCode": 500,"message": "Internal server error"}
同时,我们也可以根据需要进行异常处理
![](https://img-blog.csdnimg.cn/20210605141434993.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1Njg5MzUx,size_16,color_FFFFFF,t_70)
基础异常类
Nest提供了一个内置的 HttpException 类,它从 @nestjs/common 包中导入。
现在当客户端调用这个端点时,响应如下所示:
{ "statusCode": 403, "message": "Forbidden" }
HttpException
构造函数有两个必要的参数来决定响应
:
response
参数定义
JSON
响应体。它可以是
string
或
object
,如下所述。
status
参数定义
HTTP
状态代码。
默认情况下,
JSON
响应主体包含两个属性:
statusCode
:默认为
status
参数中提供的
HTTP
状态代码
message:
基于状态的
HTTP
错误的简短描述
仅覆盖
JSON
响应主体的消息部分,请在
response
参数中提供一个
string
。
要覆盖整个
JSON
响应主体,请在
response
参数中传递一个
object
。
Nest
将序列化对象,并将其作为
JSON
响应返回。
第二个构造函数参数
-status-
是有效的
HTTP
状态代码
![](https://img-blog.csdnimg.cn/20210605141539128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU1Njg5MzUx,size_16,color_FFFFFF,t_70)
使用上面的代码,响应如下所示: