Skip to content

关于[数据流异常拦截器]的疑问 #22

Open
@SirM2z

Description

@SirM2z

你好,从你的开源代码中学到很多,非常感谢!

数据流异常拦截器按照 README 的描述是:当控制器所需的 Promise service 发生错误时,错误将在此被捕获

有两个个疑问:

  1. 该拦截器只是收集了错误信息并抛出异常(CustomException),仅仅是这样的需求的话,为什么不直接通过过滤器(HttpExceptionFilter)捕获错误呢?因为拦截器抛出的异常(CustomException)最终依然是交给过滤器(HttpExceptionFilter)来处理,而过滤器的第一个参数 exception 是有完整的错误信息的
  2. 该拦截器中抛出异常的代码是 throwError(new CustomException({ message, error }, statusCode));,这样的写法会导致在终端中打印出 抛出异常的无效堆栈信息
    image,并没有记录实质的请求相关的内容

我在生产环境中并没有关闭 NestJS Logger,所以我在 HttpExceptionFilter 中多加了些打印日志

Logger.error(
  `${request.method} ${request.url}`,
  JSON.stringify(errorResponse),
  'HttpExceptionFilter',
);

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions