jla*_*ang 5 exception-handling nestjs
我试图实现一个简单的行为:每当抛出异常时,我想将错误作为响应发送。我这种幼稚的代码看起来像这样,但根本没有响应:
异常过滤器:
import { ExceptionFilter, ArgumentsHost, Catch } from '@nestjs/common';
@Catch()
export class AnyExceptionFilter implements ExceptionFilter {
catch(exception: any, host: ArgumentsHost) {
return JSON.stringify(
{
error: exception,
},
null,
4,
);
}
}
Run Code Online (Sandbox Code Playgroud)
模块
@Module({
imports: [],
controllers: [AppController, TestController],
providers: [AppService, AnyExceptionFilter],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
主文件
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalFilters(new AnyExceptionFilter());
await app.listen(1212);
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?提前致谢 :)
小智 6
import { ExceptionFilter, Catch, HttpException, ArgumentsHost, HttpStatus } from '@nestjs/common';
@Catch()
export class AnyExceptionFilter implements ExceptionFilter {
catch(error: Error, host: ArgumentsHost) {
const response = host.switchToHttp().getResponse();
const status = (error instanceof HttpException) ? error.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR;
response
.status(status)
.json(error);
}
}
Run Code Online (Sandbox Code Playgroud)
This code seems to be working fine for me.
Nest version: 5.0.1