1

我正在使用@ControllerAdvice注释在应用程序级别定义异常。现在的问题是我有两个@ControllerAdvice类,一个用于 REST,一个用于普通 Web 应用程序。当我在两者中定义@ExceptionHandlerException.class,只考虑第一个。我如何将两者分开?或者我怎样才能捕捉到一个异常并确定它是从哪里发生的?有没有办法或者我需要使用特定于控制器的异常处理程序?

4

2 回答 2

0

我通过为我的应用程序创建一个自定义异常并使用@exception 处理程序为每个异常处理程序提供一个异常处理程序方法来解决此问题。

我还使用方面来确保每个异常都转换为任何自定义异常。

@Aspect
@Component
public class ExceptionInterceptor {

    @AfterThrowing(pointcut = "within(x.y.package..*)", throwing = "t")
    public void toRuntimeException(Throwable t)
            throws ApplicationException1, ApplicationException2,ApplicationException3 {
        if (t instanceof ApplicationException1) {

            throw (ApplicationException1) t;
        } else if (t instanceof ApplicationException2) {

            throw (ApplicationException2) t;
        }  else 
            throw (ApplicationException3) t;
        }
}

这些会将控制权转移到@controlleradvice。

于 2013-10-11T19:27:32.677 回答
-1

我注意到这已经离开了一个月左右,所以它可能是旧的。但是这篇文章可能对http://www.baeldung.com/2013/01/31/exception-handling-for-rest-with-spring-3-2/有所帮助。

3.5 节可能是您正在寻找的,一个自定义的异常解析器。

于 2013-08-22T23:02:02.447 回答