springboot統一異常處理方法
阿新 • • 發佈:2018-12-28
@ControllerAdvice註解將作用在所有註解了@RequestMapping的控制器的方法上
@ExceptionHandler:用於全域性處理控制器裡的異常
所以在寫專案的時候都service層和mapper層都使用拋異常的方式,把異常都拋到controller層,然後來統一處理.這個類其實就相當於一個controller,也能重定向,轉發頁面.
這個是統一異常處理類, @ControllerAdvice這個註解宣告的表示統一異常處理,@ExceptionHandler(value = Exception.class)這個註解寫在方法上表示,該方法處理哪個異常.
package com.buba.exceptionController; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; //捕捉工程所有異常 @ControllerAdvice public class GloableExceptionController { //攔截Exception型別異常 @ExceptionHandler(value = Exception.class) public ModelAndView defaultExceptionHandler(HttpServletRequest request,Exception ex){ ModelAndView modelAndView = new ModelAndView("defaultException"); //獲取請求路徑 modelAndView.addObject("url",request.getRequestURL()); //異常物件 modelAndView.addObject("ex",ex); //異常物件資訊 modelAndView.addObject("message",ex.getMessage()); return modelAndView; } @ExceptionHandler(value = ArrayIndexOutOfBoundsException.class) public ModelAndView defaultExceptionHandler2(HttpServletRequest request,Exception ex){ ModelAndView modelAndView = new ModelAndView("defaultException2"); //獲取請求路徑 modelAndView.addObject("url",request.getRequestURL()); //異常物件 modelAndView.addObject("ex",ex); //異常物件資訊 modelAndView.addObject("message",ex.getMessage()); return modelAndView; } }