在micronaut中找不到重写异常处理程序



我正在尝试覆盖micronaut中的not-found异常处理程序。

我想抛出我的自定义错误格式,但找不到要替换的异常处理程序。

我目前的实现:

@Produces
@Singleton
@Requires(classes = {Exception.class, ExceptionHandler.class})
//@Replaces(NotFoundExceptionHandler.class)
public class MyNotFoundExceptionHandler implements ExceptionHandler<Exception, HttpResponse<?>> {

@Override
public HttpResponse<?> handle(HttpRequest request, Exception exception) {
return HttpResponse.notFound();
}
}

默认的micronaut异常处理程序在not-found:上抛出此格式

{
"message": "Page Not Found",
"_links": {
"self": {
"href": "/api/not-found",
"templated": false
}
}
}

我已经覆盖了其他默认的异常处理程序,如ConstraintExceptionHandlerUnsatisfiedRouteHandler,但对于not-found,记录器不会在控制台中打印异常:

20:43:23.863 [default-nioEventLoopGroup-1-5] DEBUG i.m.h.s.netty.RoutingInBoundHandler - Request GET /api/not-found
20:43:23.864 [default-nioEventLoopGroup-1-5] DEBUG i.m.h.s.netty.RoutingInBoundHandler - No matching route: GET /api/not-found
20:43:23.864 [default-nioEventLoopGroup-1-5] DEBUG i.m.web.router.RouteMatchUtils - Route match attribute for request (/api/not-found) not found

有人知道要覆盖哪个异常处理程序吗?

您可以在这里找到您要查找的内容https://guides.micronaut.io/latest/micronaut-error-handling-maven-java.html#global-错误

在任何控制器中使用此代码,您都应该可以:

@Error(status = HttpStatus.NOT_FOUND, global = true)
fun notFoundHandler(request: HttpRequest<*>): HttpResponse<JsonError> {
return HttpResponse.status<JsonError>(HttpStatus.NOT_FOUND).body(JsonError("Page '$request' Not Found"))
}

最新更新