<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          公司這套架構(gòu)統(tǒng)一處理 try...catch 這么香,求求你不要再滿屏寫了,再發(fā)現(xiàn)扣績效!

          共 7530字,需瀏覽 16分鐘

           ·

          2021-03-19 11:15


          點擊上方 藍字 關(guān)注我們!



          Java,Python,C/C++,Linux,PHP,Go,C#,QT,大數(shù)據(jù),算法,軟件教程,前端,簡歷,畢業(yè)設(shè)計等分類,資源在不斷更新中... 點擊領(lǐng)取!

          每天 11 點更新文章,餓了點外賣,點擊 ??《無門檻外賣優(yōu)惠券,每天免費領(lǐng)!》

          來源:toutiao.com/i6878184496945070604/

          • 前言
          • 推薦理由
          • 實踐
            • 1 封裝統(tǒng)一返回結(jié)果類
            • 2 自定義異常封裝類
            • 3 錯誤枚舉,拒絕硬編碼
            • 4 全局異常處理類
            • 5 測試

          前言

          軟件開發(fā)springboot項目過程中,不可避免的需要處理各種異常,spring mvc 架構(gòu)中各層會出現(xiàn)大量的try {...} catch {...} finally {...} 代碼塊,不僅有大量的冗余代碼,而且還影響代碼的可讀性。這樣就需要定義個全局統(tǒng)一異常處理器,以便業(yè)務(wù)層再也不必處理異常。

          推薦理由

          • 代碼復制到項目中通過簡單的配置即可實現(xiàn)
          • 可以靈活的根據(jù)自己的業(yè)務(wù)異常進行更細粒度的擴展

          實踐

          1 封裝統(tǒng)一返回結(jié)果類

          開發(fā)好物推薦5之統(tǒng)一異常處理從此拋棄try與catch

          源代碼

          public class AjaxResult {
           //是否成功
              private Boolean success;
              //狀態(tài)碼
              private Integer code;
              //提示信息
              private String msg;
              //數(shù)據(jù)
              private Object data;
              public AjaxResult() {

              }
              //自定義返回結(jié)果的構(gòu)造方法
              public AjaxResult(Boolean success,Integer code, String msg,Object data) {
                  this.success = success;
                  this.code = code;
                  this.msg = msg;
                  this.data = data;
              }
              //自定義異常返回的結(jié)果
              public static AjaxResult defineError(BusinessException de){
               AjaxResult result = new AjaxResult();
                  result.setSuccess(false);
                  result.setCode(de.getErrorCode());
                  result.setMsg(de.getErrorMsg());
                  result.setData(null);
                  return result;
              }
              //其他異常處理方法返回的結(jié)果
              public static AjaxResult otherError(ErrorEnum errorEnum){
               AjaxResult result = new AjaxResult();
                  result.setMsg(errorEnum.getErrorMsg());
                  result.setCode(errorEnum.getErrorCode());
                  result.setSuccess(false);
                  result.setData(null);
                  return result;
              }
           public Boolean getSuccess() {
            return success;
           }
           public void setSuccess(Boolean success) {
            this.success = success;
           }
           public Integer getCode() {
            return code;
           }
           public void setCode(Integer code) {
            this.code = code;
           }
           public String getMsg() {
            return msg;
           }
           public void setMsg(String msg) {
            this.msg = msg;
           }
           public Object getData() {
            return data;
           }
           public void setData(Object data) {
            this.data = data;
           }

          }

          2 自定義異常封裝類

          開發(fā)好物推薦5之統(tǒng)一異常處理從此拋棄try與catch

          源碼:

          public class BusinessException extends RuntimeException {
           private static final long serialVersionUID = 1L;
           /**
            * 錯誤狀態(tài)碼
            */

           protected Integer errorCode;
           /**
            * 錯誤提示
            */

           protected String errorMsg;

           public BusinessException(){

               }

           public BusinessException(Integer errorCode, String errorMsg) {
                   this.errorCode = errorCode;
                   this.errorMsg = errorMsg;
               }

           public Integer getErrorCode() {
            return errorCode;
           }

           public void setErrorCode(Integer errorCode) {
            this.errorCode = errorCode;
           }

           public String getErrorMsg() {
            return errorMsg;
           }

           public void setErrorMsg(String errorMsg) {
            this.errorMsg = errorMsg;
           }
          }

          3 錯誤枚舉,拒絕硬編碼

          開發(fā)好物推薦5之統(tǒng)一異常處理從此拋棄try與catch

          源碼

          public enum ErrorEnum {
           // 數(shù)據(jù)操作錯誤定義
           SUCCESS(200"成功"),
           NO_PERMISSION(403,"你沒得權(quán)限"),
           NO_AUTH(401,"未登錄"),
           NOT_FOUND(404"未找到該資源!"),
           INTERNAL_SERVER_ERROR(500"服務(wù)器異常請聯(lián)系管理員"),
           ;

           /** 錯誤碼 */
           private Integer errorCode;

           /** 錯誤信息 */
           private String errorMsg;

           ErrorEnum(Integer errorCode, String errorMsg) {
            this.errorCode = errorCode;
            this.errorMsg = errorMsg;
           }

              public Integer getErrorCode() {
                  return errorCode;
              }

              public String getErrorMsg() {
                  return errorMsg;
              }
          }

          4 全局異常處理類

          開發(fā)好物推薦5之統(tǒng)一異常處理從此拋棄try與catch

          源碼

          /**
           * 全局異常處理器
           *
           */

          @RestControllerAdvice
          public class GlobalExceptionHandler
          {
              private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);



              /**
               * 處理自定義異常
               */

              @ExceptionHandler(value = BusinessException.class)
              public AjaxResult bizExceptionHandler(BusinessException e
          {
               log.error(e.getMessage(), e);
                  return AjaxResult.defineError(e);
              }

              /**
               * 處理其他異常
               */

              @ExceptionHandler(value = Exception.class)
              public AjaxResult exceptionHandlerException e
          {
                log.error(e.getMessage(), e);
                  return AjaxResult.otherError(ErrorEnum.INTERNAL_SERVER_ERROR);

              }

          }

          5 測試

          開發(fā)好物推薦5之統(tǒng)一異常處理從此拋棄try與catch

          返回結(jié)果:

          開發(fā)好物推薦5之統(tǒng)一異常處理從此拋棄try與catch

          大家好,我是艿艿~~~一個每天肝到 2 點鐘的小胖子

          最近在和朋友一起肝一個 SpringBoot2.4.2 + Vue 的開源項目:

          https://github.com/YunaiV/ruoyi-vue-pro

          記得 Star 關(guān)注下噢,胖友們的支持,真的很重要!

          往期推薦

          華為 Java 編程軍規(guī) !

          干飯時間到,補貼大戰(zhàn)再起!

          IDEA 熱部署神器 JRebel ,提升開發(fā)效率10倍!

          API接口的安全設(shè)計驗證:ticket,簽名,時間戳

          看完文章,餓了點外賣,點擊 ??《無門檻外賣優(yōu)惠券,每天免費領(lǐng)!》

          END



          若覺得文章對你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。


          長按二維碼,掃掃關(guān)注哦

          ?「C語言中文網(wǎng)」官方公眾號,關(guān)注手機閱讀教程 ?


          必備編程學習資料


          目前收集的資料包括: Java,Python,C/C++,Linux,PHP,go,C#,QT,git/svn,人工智能,大數(shù)據(jù),單片機,算法,小程序,易語言,安卓,ios,PPT,軟件教程,前端,軟件測試,簡歷,畢業(yè)設(shè)計,公開課 等分類,資源在不斷更新中...


          點擊“閱讀原文”,立即免費領(lǐng)取最新資料!
          ??????
          https://mp.weixin.qq.com/s/2WFbD0y6ct13gnR8m0xiaQ


          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91探花秘 在线播放偷拍 | 亚州色逼| 日逼片| 久久91欧美特黄A片 | 又黑又长的大黑鸡巴免费高清 |