java - Spring @ExceptionHandler 行为

标签 java spring exception

假设我在应用程序中使用@ExceptionHandler

如果我定义:

@ControllerAdvice
public class MyExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public boolean generic(Exception e) {
        return e;
    }

    @ExceptionHandler(value =MyException.class)
    public boolean myException(MyException e) {
        return e;
    }
}

如果我的 Controller 抛出MyException通用异常处理程序是否也会被触发,或者仅执行与异常最匹配的异常处理程序(此处为MyException处理程序) ?

最佳答案

异常处理程序将首先尝试查找特定异常(MyException)处理程序,如果没有的话将尝试查找通用异常(Exception)。

因此,对于您的示例,当 Controller 抛出 MyException时,处理程序将调用MyException处理程序。

An exception argument: declared as a general Exception or as a more specific exception. This also serves as a mapping hint if the annotation itself does not narrow the exception types through its {@link #value()}. Request and/or response objects (Servlet API or Portlet API).

引用:https://github.com/spring-projects/spring-framework/blob/5f4d1a4628513ab34098fa3f92ba03aa20fc4204/spring-web/src/main/java/org/springframework/web/bind/annotation/ExceptionHandler.java#L33

关于java - Spring @ExceptionHandler 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45636696/

相关文章:

java - Primefaces 3.5 selectOneRadio 以图像作为背景不起作用

java - "good"触发连接 "chambers"功能的方法是什么(Java)

java - 自动从json创建java对象?

java - 定义命名空间时,使用 Maven 创建的架构验证 XML 失败

java - 创建名称为 : Lookup method resolution failed; nested exception is IllegalStateException: Failed to introspect Class from ClassLoader 的 bean 时出错

javascript - 尝试将事件从其组件之一传播到自定义 HTML 元素时抛出

java - Spring Security AnonymousAuthFilter 与 PreAuthenticationFilter 允许未经授权的请求

java - 如何在spring中设置sessionAttributes并在不同的jsps和 Controller 中访问它们

c# - 可能有意重新抛出 Resharper 异常

node.js - Node : never use try-catch?