我的基本需求是捕获用户定义的异常并返回通用响应。为此,我将@ControllerAdvice 与@ExceptionHandler 一起使用。请参阅下面的示例
@ControllerAdvice
public class CustomGlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(PersonNotFoundException.class)
public void handleBadPostalCode(HttpServletResponse response) throws IOException {
response.sendError(HttpStatus.BAD_REQUEST.value(), "Invalid person Id");
}
@ExceptionHandler(Exception.class)
public void handleDefault(Exception e, HttpServletResponse response) throws IOException {
e.printStackTrace();
response.sendError(HttpStatus.INTERNAL_SERVER_ERROR.value(), "Unknown error happened");
}
}
PersonNotFoundException 按预期处理。但是其他异常默认处理程序消失了,只返回没有正文的 Http 代码。显然,这是扩展 ResponseEntityExceptionHandler 时的预期行为。我可以覆盖其他默认异常,但这并不理想。使用通用的 Exception.class 处理程序将迫使我为所有这些返回一个 HTTP 代码。
所以我正在寻找一种方法来在 ControllerAdvice 或类似中全局处理我自己的异常,而不必覆盖默认异常处理程序
谢谢