當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringMVC异常处理 自定义异常
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC异常处理 自定义异常
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
異常處理器
實現HandlerExceptionResolver接口(異常處理器)
@Component // 配上注解Spring看到實現了這個接口就知道是異常處理器了 public class ExceptionResolver implements HandlerExceptionResolver {public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex) {System.out.println("異常處理器正在執行中");ModelAndView modelAndView = new ModelAndView();//定義異常現象出現后,反饋給用戶查看的信息modelAndView.addObject("msg","出錯啦! ");//定義異常現象出現后,反饋給用戶查看的頁面modelAndView.setViewName("error.jsp");return modelAndView;} }根據異常的種類不同,進行分門別類的管理,返回不同的信息
public class ExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex) {System.out.println("my exception is running ...."+ex);ModelAndView modelAndView = new ModelAndView();if( ex instanceof NullPointerException){modelAndView.addObject("msg","空指針異常");}else if ( ex instanceof ArithmeticException){modelAndView.addObject("msg","算數運算異常");}else{modelAndView.addObject("msg","未知的異常");}modelAndView.setViewName("error.jsp");return modelAndView;} }注解開發異常處理器:
使用注解實現異常分類管理
- 名稱: @ControllerAdvice
- 類型: 類注解
- 位置:異常處理器類上方
- 作用:設置當前類為異常處理器類
使用注解實現異常分類管理
- 名稱: @ExceptionHandler
- 類型: 方法注解
- 位置:異常處理器類中針對指定異常進行處理的方法上方
- 說明:處理器方法可以設定多個
異常分類:
工作中肯定是不能直接去定義一個異常類,然后挨個匹配異常,可能不同的異常給用戶展示 寫到死。
業務異常:
- 發送對應消息傳遞給用戶,提醒規范操作
系統異常:
- 發送固定消息傳遞給用戶,安撫用戶
- 發送特定消息給運維人員,提醒維護
- 記錄日志
其他異常:
- 發送固定消息傳遞給用戶,安撫用戶
- 發送特定消息給編程人員,提醒維護
- 納入預期范圍內
- 記錄日志
自定義異常
用戶行為異常類
//自定義異常繼承RuntimeException,覆蓋父類所有的構造方法 public class BusinessException extends RuntimeException {public BusinessException() {}public BusinessException(String message) {super(message);}public BusinessException(String message, Throwable cause) {super(message, cause);}public BusinessException(Throwable cause) {super(cause);}public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} }系統異常:
//自定義異常繼承RuntimeException,覆蓋父類所有的構造方法 public class SystemException extends RuntimeException {public SystemException() {}public SystemException(String message) {super(message);}public SystemException(String message, Throwable cause) {super(message, cause);}public SystemException(Throwable cause) {super(cause);}public SystemException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} }自定義異常觸發類
@Controller public class UserController {@RequestMapping("/save")@ResponseBodypublic List<User> save(@RequestBody User user) {System.out.println("user controller save is running ...");//模擬業務層發起調用產生了異常 // int i = 1/0; // String str = null; // str.length();//對用戶的非法操作進行判定,并包裝成異常對象進行處理,便于統一管理if(user.getName().trim().length() < 8){throw new BusinessException("對不起,用戶名長度不滿足要求,請重新輸入!");}if(user.getAge() < 0){throw new BusinessException("對不起,年齡必須是0到100之間的數字!");}if(user.getAge() > 100){throw new SystemException("服務器連接失敗,請盡快檢查處理!");}User u1 = new User();u1.setName("Tom");u1.setAge(3);User u2 = new User();u2.setName("Jerry");u2.setAge(5);ArrayList<User> al = new ArrayList<User>();al.add(u1);al.add(u2);return al;} }Ajax處理
<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %><a href="javascript:void(0);" id="testException">訪問springmvc后臺controller,傳遞Json格式POJO</a><br/><script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script><script type="text/javascript">$(function () {$("#testException").click(function(){$.ajax({contentType:"application/json",type:"POST",url:"save",/*通過修改參數,激活自定義異常的出現*/// name長度低于8位出現業務異常// age小于0出現業務異常// age大于100出現系統異常// age類型如果無法匹配將轉入其他類別異常data:'{"name":"Jock","age":"111"}',dataType:"text",//回調函數success:function(data){alert(data);}});});}); </script>通過自定義異常將所有的異常現象進行分類管理,以統一的格式對外呈現異常消息,部分異常是面向用戶,部分是面向內部的,比如說服務器出現了故障,告訴用戶出錯了就行了,不需要顯示具體的原因,然后發送異常給內部人員進行處理操作
總結
以上是生活随笔為你收集整理的SpringMVC异常处理 自定义异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java——多线程使用详解
- 下一篇: linux安装mongo卸载mongo,