我试图使用@ExceptionHandler(Exception.class)处理所有类型的异常.但它并没有处理所有类型的异常.
当我试图从邮递员/浏览器访问错误的HTTP方法时,我没有得到任何响应空白页面即将到来.
可以请任何人告诉我为什么我没有得到任何回复或告诉我,如果我在我的代码中做错了什么?
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity handleAllExceptionMethod(Exception ex,WebRequest requset,HttpServletResponse res) {
ExceptionMessage exceptionMessageObj = new ExceptionMessage();
exceptionMessageObj.setStatus(res.getStatus());
exceptionMessageObj.setError(ex.getLocalizedMessage());
exceptionMessageObj.setException(ex.getClass().getCanonicalName());
exceptionMessageObj.setPath(((ServletWebRequest) requset).getRequest().getServletPath());
return new ResponseEntity(exceptionMessageObj, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
}
解决方法:
要么覆盖ResponseEntityExceptionHandler#handleExceptionInternal(),要么不要扩展ResponseEntityExceptionHandler.
@ControllerAdvice上的@Order(Ordered.HIGHEST_PRECEDENCE)应该在根据this answer调用ResponseEntityExceptionHandler之前工作,这表明需要Spring Framework 4.3.7.
标签:java,spring,spring-boot,exception-handling
来源: https://codeday.me/bug/20190910/1799063.html