问题:如何处理管理上下文中 MVC 端点中抛出的异常?
public class MyMvcEndpoints extends EndpointMvcAdapter {
@ResponseBody
@RequestMapping(method = GET, value = "/foo", produces = APPLICATION_JSON_VALUE)
public Foo foo() {
throw new FooNotFound("Foo Not Found!");
}
}
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class FooNotFound extends RuntimeException {
public NotFoundException(String message){
super(message);
}
}
使用当前配置,我收到 500
而不是 404
。我尝试了异常处理的常用方法,如 ControllerAdvice、ExceptionHandler 方法等。没有成功。
我还在 EndpointWebMvcChildContextConfiguration
中找到了 CompositeHandlerExceptionResolver
,它负责异常处理。我尝试定义自己的 HandlerExceptionResolver
bean,但它无法在管理上下文中找到我的解析器。
最佳答案
您可以使用 Controller 建议。 Spring 的 @ControllerAdvice
注释是 @Component
的一种特殊形式,用于处理 Controller 的横切关注点。最常见的用例是提供异常处理程序,但它也可以做一些其他巧妙的事情。
@ControllerAdvice
public class ExceptionControllerAdvice {
@ExceptionHandler(Exception.class)
public ModelAndView exception(Exception e) {
ModelAndView mav = new ModelAndView("exception");
mav.addObject("name", e.getClass().getSimpleName());
mav.addObject("message", e.getMessage());
return mav;
}
}
关于java - Spring Boot 执行器管理端点异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435535/