成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

公司這套架構統一處理try...catch這么香,求求你不要再滿屏寫了,再發現扣績效!

開發 架構
軟件開發springboot項目過程中,不可避免的需要處理各種異常,spring mvc 架構中各層會出現大量的try {...} catch {...} finally {...} 代碼塊,不僅有大量的冗余代碼,而且還影響代碼的可讀性。

 前言

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

推薦理由

  •  代碼復制到項目中通過簡單的配置即可實現
  •  可以靈活的根據自己的業務異常進行更細粒度的擴展

實踐

1.封裝統一返回結果類

 

  1. public class AjaxResult {  
  2.  //是否成功  
  3.     private Boolean success;  
  4.     //狀態碼  
  5.     private Integer code;  
  6.     //提示信息  
  7.     private String msg;  
  8.     //數據  
  9.     private Object data;  
  10.     public AjaxResult() {  
  11.     }  
  12.     //自定義返回結果的構造方法  
  13.     public AjaxResult(Boolean success,Integer code, String msg,Object data) {  
  14.         this.success = success;  
  15.         this.code = code;  
  16.         this.msg = msg;  
  17.         this.data = data;  
  18.     }  
  19.     //自定義異常返回的結果  
  20.     public static AjaxResult defineError(BusinessException de){  
  21.      AjaxResult result = new AjaxResult();  
  22.         result.setSuccess(false);  
  23.         result.setCode(de.getErrorCode());  
  24.         result.setMsg(de.getErrorMsg());  
  25.         result.setData(null);  
  26.         return result;  
  27.     }  
  28.     //其他異常處理方法返回的結果  
  29.     public static AjaxResult otherError(ErrorEnum errorEnum){  
  30.      AjaxResult result = new AjaxResult();  
  31.         result.setMsg(errorEnum.getErrorMsg());  
  32.         result.setCode(errorEnum.getErrorCode());  
  33.         result.setSuccess(false);  
  34.         result.setData(null);  
  35.         return result;  
  36.     }  
  37.  public Boolean getSuccess() {  
  38.   return success;  
  39.  }  
  40.  public void setSuccess(Boolean success) {  
  41.   this.success = success;  
  42.  }  
  43.  public Integer getCode() {  
  44.   return code;  
  45.  }  
  46.  public void setCode(Integer code) {  
  47.   this.code = code;  
  48.  }  
  49.  public String getMsg() {  
  50.   return msg;  
  51.  }  
  52.  public void setMsg(String msg) { 
  53.   this.msg = msg; 
  54.  }  
  55.  public Object getData() {  
  56.   return data;  
  57.  }  
  58.  public void setData(Object data) {  
  59.   this.data = data;  
  60.  }    

2 自定義異常封裝類

 

  1. public class BusinessException extends RuntimeException {  
  2.  private static final long serialVersionUID = 1L 
  3.  /**  
  4.   * 錯誤狀態碼  
  5.   */  
  6.  protected Integer errorCode;  
  7.  /**  
  8.   * 錯誤提示  
  9.   */  
  10.  protected S  
  11.  public BusinessException(){  
  12.      }  
  13.  public BusinessException(Integer errorCode, String errorMsg) {  
  14.          this.errorCode = errorCode;  
  15.          this.errorMsg = errorMsg;  
  16.      }  
  17.  public Integer getErrorCode() { 
  18.   return errorCode;  
  19.  }  
  20.  public void setErrorCode(Integer errorCode) {  
  21.   this.errorCode = errorCode;  
  22.  }  
  23.  public String getErrorMsg() {  
  24.   return errorMsg;  
  25.  }  
  26.  public void setErrorMsg(String errorMsg) {  
  27.   this.errorMsg = errorMsg;  
  28.  }  

3 錯誤枚舉,拒絕硬編碼

 

  1. public enum ErrorEnum {  
  2.  // 數據操作錯誤定義  
  3.  SUCCESS(200, "成功"),  
  4.  NO_PERMISSION(403,"你沒得權限"), 
  5.  NO_AUTH(401,"未登錄"),  
  6.  NOT_FOUND(404, "未找到該資源!"),  
  7.  INTERNAL_SERVER_ERROR(500, "服務器異常請聯系管理員"),  
  8.  ;  
  9.  /** 錯誤碼 */  
  10.  private Integer errorCode;  
  11.  /** 錯誤信息 */  
  12.  private String errorMsg;  
  13.  ErrorEnum(Integer errorCode, String errorMsg) {  
  14.   this.errorCode = errorCode;  
  15.   this.errorMsg = errorMsg;  
  16.  }  
  17.     public Integer getErrorCode() {  
  18.         return errorCode;  
  19.     }  
  20.     public String getErrorMsg() {  
  21.         return errorMsg;  
  22.     }  

4 全局異常處理類

 

  1. /**  
  2.  * 全局異常處理器  
  3.  *   
  4.  */  
  5. @RestControllerAdvice  
  6. public class GlobalExceptionHandler  
  7.  
  8.     private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);  
  9.     /**  
  10.      * 處理自定義異常  
  11.      *  
  12.      */ 
  13.     @ExceptionHandler(value = BusinessException.class)  
  14.     public AjaxResult bizExceptionHandler(BusinessException e) {  
  15.      log.error(e.getMessage(), e);  
  16.         return AjaxResult.defineError(e);  
  17.     }  
  18.     /**  
  19.               *            處理其他異常  
  20.      *  
  21.      */ 
  22.     @ExceptionHandler(value = Exception.class) 
  23.     public AjaxResult exceptionHandler( Exception e) {  
  24.       log.error(e.getMessage(), e);  
  25.         return AjaxResult.otherError(ErrorEnum.INTERNAL_SERVER_ERROR);    
  26.      } 

5 測試

返回結果:

 

 

責任編輯:龐桂玉 來源: java版web項目
相關推薦

2020-06-15 08:12:51

try catch代碼處理器

2025-02-13 00:34:22

Spring對象系統

2024-08-09 08:25:32

Spring流程注解

2023-12-05 14:10:00

接口可讀性

2020-05-26 13:48:05

后端框架異常

2020-10-12 10:45:44

nullava程序員

2019-08-22 14:02:00

Spring BootRestful APIJava

2020-05-09 10:18:31

Java開源工具

2025-06-25 08:15:00

JavaScrip異步編程代碼

2024-10-09 08:48:52

2018-04-27 14:18:01

2014-08-21 14:49:32

MIUI 6

2020-12-11 09:24:19

Elasticsear存儲數據

2021-05-11 07:10:18

標準庫DjangoOS

2020-12-15 08:06:45

waitnotifyCondition

2021-05-17 14:57:23

策略模式代碼

2023-11-13 17:01:26

C++編程

2011-04-20 11:04:23

LinuxHTTP 302

2009-08-27 09:57:24

Power7處理器

2012-10-30 10:50:26

AMDARM架構處理器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区在线播放 | 韩国av电影网 | 亚洲va欧美va天堂v国产综合 | 黄色成人免费在线观看 | 亚洲一区二区免费 | 日本精a在线观看 | 蜜桃视频一区二区三区 | 日本黄色大片免费看 | 久久精品91久久久久久再现 | 欧美成人自拍 | 色免费视频 | 亚洲欧美视频一区 | 国产精品国产a | 日本在线小视频 | 亚洲视频中文字幕 | 第一福利社区1024 | 国产一级特黄aaa大片评分 | 中文字幕韩在线第一页 | 久久亚洲一区二区三区四区 | 久久一区二区三区四区 | 亚洲精品白浆高清久久久久久 | 欧美日韩在线免费观看 | 国产精品久久久久久久久久不蜜臀 | 久在草 | 超碰高清 | 黑人巨大精品欧美一区二区一视频 | 密乳av| 国内精品久久久久久久影视简单 | 中文字幕第十页 | 日韩成人精品 | 99精品国产一区二区三区 | 久久噜噜噜精品国产亚洲综合 | 天天插天天操 | 99精品国产在热久久 | 欧美日韩在线国产 | 黑人巨大精品欧美一区二区免费 | 色综合99| 日韩综合| 午夜电影在线播放 | 在线免费观看视频黄 | 国产欧美日韩综合精品一 |