@ExceptionHandler不处理抛出的异常

Jav*_*avi 9 java spring jsp exception-handling spring-mvc

我的控制器中有一个方法可以处理应用程序抛出的异常.所以我有一个像这样的方法.

@Controller
public class ExceptionController {

    @RequestMapping(value="/error")
    @ExceptionHandler(value={Exception.class, NullPointerException.class})
    public String showError(Exception e, Model model){
        return "tiles:error";
    }
}
Run Code Online (Sandbox Code Playgroud)

并尝试我,如果它工作,我在另一个方法控制器中的另一个方法中抛出NullPointerException:

boolean a = true;
if(a){ 
    throw new NullPointerException();
}
Run Code Online (Sandbox Code Playgroud)

抛出异常后,它会在JSP中打印,但它不会抛出我的showError()方法(我在那里设置了一个断点,它永远不会进入).showError()方法将捕获异常并根据异常类型显示不同的错误页面(尽管现在它总是显示相同的错误页面).如果我转到url/error它会显示错误页面,因此showError()方法是正常的.

我正在使用Spring 3.

可能是什么问题?

谢谢.

ska*_*man 7

如果查看日志,您可能会看到:

java.lang.IllegalStateException:不支持的参数[ org.springframework.ui.Model]对于 @ExceptionHandler方法

换句话说,@ExceptionHandler不允许方法声明Model参数(请参阅docs).

删除该参数(无论如何都不使用),它应该按预期工作.