nodepress
nodepress copied to clipboard
关于[数据流异常拦截器]的疑问
你好,从你的开源代码中学到很多,非常感谢!
数据流异常拦截器按照 README
的描述是:当控制器所需的 Promise service 发生错误时,错误将在此被捕获
有两个个疑问:
- 该拦截器只是收集了错误信息并抛出异常(
CustomException
),仅仅是这样的需求的话,为什么不直接通过过滤器(HttpExceptionFilter
)捕获错误呢?因为拦截器抛出的异常(CustomException
)最终依然是交给过滤器(HttpExceptionFilter
)来处理,而过滤器的第一个参数exception
是有完整的错误信息的 - 该拦截器中抛出异常的代码是
throwError(new CustomException({ message, error }, statusCode));
,这样的写法会导致在终端中打印出 抛出异常的无效堆栈信息,并没有记录实质的请求相关的内容
我在生产环境中并没有关闭 NestJS
的 Logger
,所以我在 HttpExceptionFilter
中多加了些打印日志
Logger.error(
`${request.method} ${request.url}`,
JSON.stringify(errorResponse),
'HttpExceptionFilter',
);