我從Spring MVC的控制器寫我的異常處理程序,我有以下代碼:春3.0 MVC的ExceptionHandler
@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()返回消息「/ by zero」。
現在我試圖通過拋出第二個異常:
String test = null;
System.out.println(test.charAt(2));
將引發異常,但是exception.getMessage()返回null,堆棧跟蹤是空爲好。
有趣的是,在log4j記錄器中,我看到了兩個例外的完整堆棧跟蹤。 它爲什麼會這樣?
是的。堆棧跟蹤和消息中有空。我知道向用戶展示NPE很醜陋,但我的目標是瞭解系統是如何工作的以及爲什麼我的行爲不一致。 – 2010-10-29 10:07:01
我在說,你沒有發佈任何導致行爲不一致的代碼,那麼我們應該如何幫助你呢? – Affe 2010-10-29 17:19:34