一、編寫controllerjava
package com.bjsxt.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; /** * Created by Administrator on 2019/2/13. */ @Controller public class IndexController { @RequestMapping("toIndex") public String toIndex(){ String str=null; //會發生空指針異常 str.length(); return "index"; } @RequestMapping("toIndex2") public String toIndex2(){ //會發生算術異常 int num=10/0; return "index"; } @RequestMapping("toIndex3") public String toIndex3(){ //會發生數組下標越界異常,該異常沒有專門處理,會跳到自定義的錯誤頁面 String[] arr={"aa","bb","cc"}; System.out.print(arr[3]); return "index"; } /** * 處理ArithmeticException異常,該@ExceptionHandler註釋的value屬性能夠是一個數組, * 而後再根據注入的exception判斷對不一樣異常分別進行不一樣的處理,也能夠寫多個controller, * 對多個不一樣異常進行處理,這裏採用第二種 * @param e 會將產生異常對象注入到方法中 * @return 該方法須要返回一個 ModelAndView:目的是能夠讓咱們封裝異常信息以及視圖的指定 */ @ExceptionHandler(value = {java.lang.ArithmeticException.class}) public ModelAndView arithmeticExceptionHandler(Exception e){ ModelAndView mv=new ModelAndView("error_arithmetic"); mv.addObject("msg",e.toString()); return mv; } /** * 處理NullPointerException異常 * @param e 會將產生異常對象注入到方法中 * @return 該方法須要返回一個 ModelAndView:目的是能夠讓咱們封裝異常信息以及視圖的指定 */ @ExceptionHandler(value = {java.lang.NullPointerException.class}) public ModelAndView nullPointerExceptionHandler(Exception e){ ModelAndView mv=new ModelAndView("error_nullPointer"); mv.addObject("msg",e.toString()); return mv; } }
目錄結構,該方法存在的弊端就是在每個controller裏面都要添加這些異常處理代碼,形成代碼冗餘拉雜web