我正在从SpringMVC控制器编写异常处理程序,我有以下代码:
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleMyException(NullPointerException exception) {
System.out.println(exception.getMessage());
ModelAndView modelAndView = new ModelAndView("/errors/404");
modelAndView.addObject("message", exception.getMessage());
return modelAndView;
}
第二个是:
@ExceptionHandler(ArithmeticException.class)
public ModelAndView handleException(ArithmeticException exception) {
System.out.println(exception.getMessage());
ModelAndView modelAndView = new ModelAndView("/errors/404");
modelAndView.addObject("message", exception.getMessage());
return modelAndView;
}
现在我编写代码是为了抛出这些异常:
第一行引发算术异常:
System.out.println(100/0);
它抛出正确的异常,exception.getmessage()返回message“/by zero”。
现在我尝试通过以下方式抛出第二个异常:
String test = null;
System.out.println(test.charAt(2));
引发异常,但exception.getmessage()返回空值,堆栈跟踪也为空。
有趣的是,在log4j记录器中,我看到了两个异常的完整堆栈跟踪。
为什么会这样?