我正在写一个Spring Boot应用程序。我现在正在实施异常处理。
我遇到了以下问题。
我的异常处理程序如下所示:
@ControllerAdvice
public class SpecialExceptionHandler {
@ExceptionHandler(MissingServletRequestParameterException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseObject missingServletErrorHandler(HttpServletRequest req, MissingServletRequestParameterException exception) {
//do something
return responseObject;
}}
我有一个看起来像
的常规异常处理程序@ControllerAdvice
public class GeneralExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseObject defaultErrorHandler(HttpServletRequest req, Exception exception) {
// do something
return responseObject;
}}
但是我遇到了一个问题:我的应用程序总是运行到GeneralExceptionHandler而不是特殊处理程序,除非我将GeneralExceptionHandler类的名称更改为在特殊异常处理程序之后按字母顺序排列的名称(例如,将'GeneralExceptionHandler'更改为'zGeneralExceptionHandler “)。
如何解决此问题?
答案 0 :(得分:3)
您可以尝试在@Order(N)
上添加ControllerAdvice
注释,以强制注册订单(其中N是定义订单的int
)