首页 > 其他分享 >NestJs 异常过滤器

NestJs 异常过滤器

时间:2023-04-06 16:34:37浏览次数:65  
标签:status const HttpException NestJs 过滤器 异常 Response

文档:https://docs.nestjs.cn/9/exceptionfilters

实现

新建文件

common下面新建 filter.ts

image-20230406150943647

实现

让我们创建一个异常过滤器

它负责捕获作为HttpException类实例的异常

并为它们设置自定义响应逻辑

为此,我们需要访问底层平台 Request和 Response

我们将访问Request对象,以便提取原始 url并将其包含在日志信息中

我们将使用 Response.json()方法,使用 Response对象直接控制发送的响应。

import { ExceptionFilter, Catch, ArgumentsHost,HttpException } from '@nestjs/common'
 
import {Request,Response} from 'express'
 
@Catch(HttpException)
export class HttpFilter implements ExceptionFilter {
    catch(exception:HttpException, host: ArgumentsHost) {
        const ctx = host.switchToHttp()
        const request = ctx.getRequest<Request>()
        const response = ctx.getResponse<Response>()
 
        const status = exception.getStatus()
 
        response.status(status).json({
           data:exception.message,
           time:new Date().getTime(),
           success:false,
           path:request.url,
           status
        })
    }
}

image-20230406152256145

注册全局异常过滤器

在 main.ts 中注册

// 注册全局异常过滤器
app.useGlobalFilters(new HttpFilter());

标签:status,const,HttpException,NestJs,过滤器,异常,Response
From: https://www.cnblogs.com/makalochen/p/17293192.html

相关文章

  • 【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介过滤器模式(FilterPattern)或标准模式(CriteriaPattern),是一种结构型模式。这种模式允许使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来,它结合多个标准来获得单一标准。例子将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Perso......
  • 框架中无效的列类型异常分析
    org.springframework.jdbc.UncategorizedSQLException:Errorsettingnullforparameter#5withJdbcTypeOTHER.TrysettingadifferentJdbcTypeforthisparameteroradifferentjdbcTypeForNullconfigurationproperty.Cause:java.sql.SQLException:无效的列类型......
  • Java异常处理流程
    Java异常处理流程java中处理异常的代码块构成一般如下classTestException{StringtestEx(){try{System.out.println("捕获异常");}catch(java.lang.ExceptionE){System.out.println("处理发生异常");}finally{......
  • Redis布隆过滤器的原理和安装使用
    前言本文讲述布隆过滤器(RedisBloom)的基本原理和安装使用。RedisBloom是什么?RedisBloom是Redis中过滤器模块,可以用来判断值是否存在,常用来解决缓存穿透问题。查询数据时,先用RedisBloom判断数据是否存在,不存在则直接返回,存在则从缓存/数据库获取后返回。比如查询接......
  • 全局异常拦截和返回值封装
    全局异常拦截和返回值封装共分为五个类,分别是错误码枚举类、返回值封装类、自定义业务异常类、全局拦截类、全局返回值处理类。错误码枚举类用来定义返回值的错误码。packagecom.masy.global.exception;/***@ClassNameErrorCode*@Description错误码枚举*@Author......
  • 用前缀树实现中文敏感词过滤器
    前言本文代码实现一个中文的敏感词过滤器,预先将准备好的敏感词写入前缀树数据结构中实现快速检索,并且节省内存。一般用于检查注册用户名称、言论是否包含不文明的词汇。可以判断内容是否包含敏感词;找出内容中的敏感词;将内容中的敏感词替换成设置的字符。运行环境代码使用了JDK......
  • MySQL AutoIncrement--PXC集群批量插入操作获取自增ID异常问题
    问题描述由于MySQLPXC集群的所有节点均可读写,因此当PXC集群中节点增加和减少时,PXC集群会自动调整集群各节点的自增ID步长,避免不同集群节点生成相同自增ID值产生冲突。当PXC集群中读节点数量发生变化时,客户端执行BatchInsert方法可能返回错误的自增ID值。问题原因由于MySQL数......
  • 4/4 异常
    1.c++类型转换![[HR9Q)FZVH6_[3I]SXXX}01Q.jpg]]![[3_B3B_OCF@J`WE]_1L1K63O.jpg]]1.静态转换用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换father*f=NULL;son*s=NULL;//向上将子类转换为父类father*f1=static_cast<father>(s);//向下将父类转为......
  • Java笔记(8) 异常和错误
    异常的简单分类检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如用户要打开一个不存在的文件,一个异常就发生了,这些异常在编译时不能被简单的忽略。运行时异常:运行时异常是可能被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时......
  • 【达梦】偶现“网络通信异常”
    背景:DRUID+mybatis+达梦数据库上线后,偶现“网络通信异常”的错误解决方案原因:不知道但解决方案是在application.yml上的druid配置做了一下调整一开始druid的配置是这样子的:druid:url:jdbc:dm://10.12.xx.xx:5236/dev?useUnicode=true&characterEncoding=UT......