我正在尝试使用@ExceptionHandler(Exception.class)
处理所有类型的异常。但这并不能处理所有类型的异常。
当我尝试从 postman /浏览器访问错误的HTTP方法时,我没有收到任何响应空白页。
能否请任何人告诉我为什么我没有得到任何答复,或者告诉我我在代码中做错了什么?
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ExceptionMessage> 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<ExceptionMessage>(exceptionMessageObj, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
}
最佳答案
覆盖ResponseEntityExceptionHandler#handleExceptionInternal()
或不扩展ResponseEntityExceptionHandler
。
在按照this answer调用@Order(Ordered.HIGHEST_PRECEDENCE)
之前,应在@ControllerAdvice
上使用ResponseEntityExceptionHandler
,这表明需要Spring Framework 4.3.7。