1. 程式人生 > >spring mvc 關於@ExceptionHandler 異常處理無效問題

spring mvc 關於@ExceptionHandler 異常處理無效問題

學springmvc時學過@ExceptionHandler ,但一直都沒真正用過。

今天在用的時候弄了半個小時,就是不知道為什麼總是報500錯誤,並沒有進入@ExceptionHandler方法

下面這個是測試方法

@RequestMapping("/test")

private String Test() {
throw new NullPointerException();

}

下面這個是異常處理方法(錯誤的)

@ExceptionHandler(value = { EvaluationException.class })
private String handleEvaluationException(Exception e,Model model) {
model.addAttribute("errorInfo", e.getMessage());
modelAndView.setViewName("error");
return "error";

}

如果你已經看出有什麼問題了,那就不用往下看了,

接下來是正確的異常處理方法

@ExceptionHandler(value = { EvaluationException.class })
private ModelAndView handleEvaluationException(Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorInfo", e.getMessage());
modelAndView.setViewName("error");
return modelAndView;

}

經過與錯誤的那個方法進行對比,能發現怎麼回事了嗎?

不論怎麼,還是這邊說一下吧,

@ExceptionHandler方法的引數不能有Map,Model等等,而是隻能傳入你設定的異常。。

如果有Map,Model等等,那麼該@ExceptionHandler方法是不會處理你的異常的

如果在異常處理中 需要傳遞model值給jsp頁面怎麼辦?

好說,通過ModelAndView作為返回值進行傳遞屬性已經檢視名就行了。

唉,為什麼,引數不能用Model這些呢?都習慣了RequestionMapping的那種用法了,就是因為這種習慣,我貌似浪費了一個小時才解決這個問題。

也不知道是不是因為我百度錯了,關於這個錯誤的文章一直沒找到,spring mvc官方文件也沒有找到,我還是去看我當初學習spring mvc的視訊才發現這個問題。