Rad*_*Rad 6 java spring spring-mvc spring-boot spring-boot-actuator
问题:如何处理管理上下文中 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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用当前配置,我收到500的不是404. 我尝试了常见的异常处理方法,如 ControllerAdvice、ExceptionHandler 方法等,但没有成功。
我还发现CompositeHandlerExceptionResolver其中EndpointWebMvcChildContextConfiguration负责异常处理。我尝试定义自己的HandlerExceptionResolverbean,但它无法在管理上下文中找到我的解析器。
您可以使用控制器建议。Spring\xe2\x80\x99s@ControllerAdvice注解是一种特殊形式@Component用于处理控制器的横切问题。最常见的用例是提供异常处理程序,但它也可以做一些其他巧妙的事情。
@ControllerAdvice\npublic class ExceptionControllerAdvice {\n\n @ExceptionHandler(Exception.class)\n public ModelAndView exception(Exception e) {\n ModelAndView mav = new ModelAndView("exception");\n mav.addObject("name", e.getClass().getSimpleName());\n mav.addObject("message", e.getMessage());\n\n return mav;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |