我希望實現一個「ExceptionController」來處理執行其他控制器方法時拋出的異常。我沒有在我的應用程序上下文中指定任何HandlerExceptionResolver,所以根據API documentation AnnotationMethodHandlerExceptionResolver應該啓動。我在來源中證實了這一點。那麼,爲什麼以下工作?Spring 3控制器異常處理程序實現問題
@Controller
public class ExceptionController {
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleNullPointerException(NullPointerException ex) {
// Do some stuff
log.error(logging stuff)
return myModelAndView;
}
}
@Controller
public class AnotherController {
@RequestMapping(value="/nullpointerpath")
public String throwNullPointer() {
throw new NullPointerException();
}
}
我看到了三個默認的異常處理程序要求異常處理的調試日誌,但什麼都不做,我看「的DispatcherServlet - 無法完成請求」。隨後出現用戶正在顯示堆棧跟蹤和500內部錯誤。
這似乎是問題所在。 – predhme 2010-04-14 12:36:48
@predhme,那真的能解決你的問題嗎?我有一個和你一樣的例子,只有當異常從同一個控制器拋出時,纔會調用@ExceptionHandler方法。 – curthipster 2010-04-30 05:44:56
我後來也注意到了。我想最重要的是我要設置一個500頁和404頁,這樣如果有什麼我沒有抓到的,用戶就不會看到堆棧跟蹤。 – predhme 2010-04-30 13:42:45