我想捕获整个应用程序中的异常并将它们保存到我的数据库中。我很难选择使用哪种方法。我知道我希望在全球范围内处理异常。我指的是这个来源:https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc并且我有我的@controlleradvice,但异常根本没有通过它。谁能给我提供一个具体的例子来说明如何做到这一点?
谢谢你。
您可以同时使用
ControllerAdvice
和 ExceptionHandler
注释来捕获特定异常并对其执行任何您想要的操作。正如@M。 Deinum 说,对于异常日志记录,您可以通过使用 logback 或 log4j Database Appender
s 获得相同的结果,但在 Service Layer
中捕获异常并将其转换为更合适的 Status Code
s 仍然是一个好主意,如下所示:
@ControllerAdvice(annotations = RestController.class)
public class GenericServiceExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity handleUncaughtException(Exception ex) {
return badRequest(ex.getMessage()).build();
}
}
此异常处理程序,捕获由
Exception
注释的 bean 抛出的所有 RestController
异常,并将它们转换为 400 Bad Request
响应。