SpringBoot中的異常處理方式


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

一、自定義錯誤頁面

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

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

  <span th:text="${exception}"></span>

二、@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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM