SpringBoot中的異常處理方式

SpringBoot中的異常處理方式
SpringBoot中有五種處理異常的方式:

一、自定義錯誤頁面
  SpringBoot默認的處理異常機制:SpringBoot默認的已經提供了一套處理異常的機制。一旦程序出現了異常SpringBoot就像/error的url發送請求。在springboot中提供了一個叫BasicExceptionController來處理/error請求,然後跳轉到默認顯示異常的頁面來展示異常信息。

如果我們需要將所有的異常統一跳轉到自定義的錯誤頁面,需要在src/main/resources/templates目錄下創建error.html頁面。並添加這個標籤。

二、@ExceptionHandle註解處理異常
  只需要在controller中添加這樣的方法:

1 @ExceptionHandler(value={java.lang.ArithmeticException.class})
2 public ModelAndView arithmeticExceptionHandler(Exception e) {
3 ModelAndView mv = new ModelAndView();
4 mv.addObject(“error”, e.toString());
5 mv.setViewName(“error”);
6 return mv;
7 }
三、@ControllerAdvice+@ExceptionHandler註解處理異常
  需要創建一個能夠處理異常的全局異常類。在該類上需要添加@ControllerAdvice註解。

1 @ControllerAdvice
2 public class GlobalException {
3 @ExceptionHandler(value={java.lang.ArithmeticException.class})
4 public ModelAndView arithmeticExceptionHandler(Exception e) {
5 ModelAndView mv = new ModelAndView();
6 mv.addObject(“error”, e.toString());
7 mv.setViewName(“error”);
8 return mv;
9 }
10 }
四、配置SimpleMappingExceptionResolver處理異常
  在全局異常類中添加一個方法完成異常類的統一處理

1 @Configuration
2 public class GlobalException {
3 public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {
4 SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
5 Properties properties = new Properties();
6 properties.put(“java.lang.ArithmeticException”, “error”);
7 resolver.setExceptionMappings(properties);
8 return resolver;
9 }
10 }
五、自定義HandlerExceptionResolver類處理異常
  需要在全局異常類中實現HandlerExceptionResolver接口

1 @Configuration
2 public class GlobalException implements HandlerExceptionResolver {
3 @Override
4 public ModelAndView resolverException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) {
5 ModelAndView mv = new ModelAndView();
6 if(exception instanceof ArithmeticException) {
7 mv.setViewName(“error”);
8 }
9 mv.addObject(“error”, exception.toString());
10 return mv;
11 }
12 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章