在系統開發過程當中,總少難免要本身處理一些異常信息,而後將異常信息變成友好的提示返回到客戶端的這樣一個過程,以前都是new一個自定義的異常,固然這個所謂的自定義異常也是繼承RuntimeException的,但這樣每每會形成異常信息說明不一致的狀況,因此就想到了用枚舉來解決的辦法。java
一、先建立一個接口,裏面提供兩個方法,一個是getErrorCode, 一個是getErrorMessage,如:this
public interface IErrorCode { public String getErrorCode(); public String getErrorMessage(); }
二、建立一個枚舉,實現IErrorCode裏的方法spa
public enum SysErrorEnums implements IErrorCode { /**參數爲空*/ EMPTY_PARAME("A11002","參數爲空"), /**參數錯誤*/ ERROR_PARAME("A11002","參數錯誤"); private String errorCode; private String errorMessage; private SysErrorEnums(String errorCode, String errorMessage) { this.errorCode = errorCode; this.errorMessage = errorMessage; } public String getErrorCode() { return errorCode; } public void setErrorCode(String errorCode) { this.errorCode = errorCode; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } }
三、定義一個自定義的異常類 code
public class BusinessException extends RuntimeException { private static final long serialVersionUID = 1L; private IErrorCode iErrorCode; private String errorCode; private String errorMessage; private Map<String, Object> errorData; public BusinessException(IErrorCode iErrorCode) { super(); this.iErrorCode = iErrorCode; this.errorCode = iErrorCode.getErrorCode(); this.errorMessage = iErrorCode.getErrorMessage(); } //其餘get、set、構造方法 }
四、代碼中拋異常blog
if(true){ throw new BusinessException(SysErrorEnums.EMPTY_OBJ); }
五、能夠經過異常攔截器來攔截錯誤,獲取錯誤後統一格式輸出;繼承
這樣作的好處是能夠高度統一全部異常返回的code及message, 若是須要更改提示信息或代號,只需更改SysErrorEnums便可,而且能夠自行添加多個異常枚舉文件來分別對應不一樣的模板異常信息。代碼結構簡單,清淅。接口