自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

 前言

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

推薦理由

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

實踐

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

 

  1. public class AjaxResult {  
  2.  //是否成功  
  3.     private Boolean success;  
  4.     //狀態(tài)碼  
  5.     private Integer code;  
  6.     //提示信息  
  7.     private String msg;  
  8.     //數(shù)據(jù)  
  9.     private Object data;  
  10.     public AjaxResult() {  
  11.     }  
  12.     //自定義返回結(jié)果的構(gòu)造方法  
  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.     //自定義異常返回的結(jié)果  
  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.     //其他異常處理方法返回的結(jié)果  
  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.   * 錯誤狀態(tài)碼  
  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.  // 數(shù)據(jù)操作錯誤定義  
  3.  SUCCESS(200, "成功"),  
  4.  NO_PERMISSION(403,"你沒得權(quán)限"), 
  5.  NO_AUTH(401,"未登錄"),  
  6.  NOT_FOUND(404, "未找到該資源!"),  
  7.  INTERNAL_SERVER_ERROR(500, "服務(wù)器異常請聯(lián)系管理員"),  
  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 測試

返回結(jié)果:

 

 

責(zé)任編輯:龐桂玉 來源: java版web項目
相關(guān)推薦

2020-06-15 08:12:51

try catch代碼處理器

2025-02-13 00:34:22

Spring對象系統(tǒng)

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開源工具

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存儲數(shù)據(jù)

2021-05-11 07:10:18

標(biāo)準(zhǔn)庫DjangoOS

2020-12-15 08:06:45

waitnotifyCondition

2023-11-13 17:01:26

C++編程

2021-05-17 14:57:23

策略模式代碼

2011-04-20 11:04:23

LinuxHTTP 302

2009-08-27 09:57:24

Power7處理器

2024-11-04 08:20:00

try-catch編程

2024-05-10 11:43:23

C#編程
點贊
收藏

51CTO技術(shù)棧公眾號