如何優雅的丟擲業務異常
阿新 • • 發佈:2020-12-23
記得上學的時候學習英語,每個英語老師說到英語翻譯的時候都會說英語翻譯要做到“信、達、雅”。如今做了一名程式設計師竟然體會我還是想用這三種境界來要求自己,恰逢自己現在所做之專案偏業務,程式碼的優雅顯得格外重要。所以我就想寫點這方面的東西,今天就先來說說如何優雅的丟擲業務異常。程式碼千千萬,只希望對自己和對大家有所幫助。
針對java開發者而言,異常的重要性不言而喻,這裡也不再贅述。今天主要說說在業務中利用異常處理機制來實現業務異常的優雅提示。
首先,我們定義一個異常編碼介面
1 public interface IErrorCode { 2 public String value();3 }
重點來了,我們去實現這個介面
1 import java.util.EnumMap; 2 3 import com.test.IErrorCode; 4 5 public enum MyBusinessErrorCode implements IErrorCode { 6 7 /** 8 * 角色不存在或已被刪除 9 */ 10 ERR_MODEL_001, 11 /** 12 * 角色編碼已存在 13 */ 14 ERR_MODEL_002; 15 16 private static EnumMap<MyBusinessErrorCode, String> errorCodeMap = newEnumMap<MyBusinessErrorCode, String>( 17 MyBusinessErrorCode.class); 18 19 static { 20 errorCodeMap.put(ERR_MODEL_001, "角色不存在!"); 21 errorCodeMap.put(ERR_MODEL_002, "角色編碼已存在!"); 22 } 23 24 public String value() { 25 return errorCodeMap.get(this); 26} 27 }
下面我們來說說這段程式碼好在哪裡,
- 統一定義異常提示,易於維護,易於國際化配置化。
- 採用列舉Map執行效率更高。
- 程式碼邏輯清晰,更容易上手,更容易統一風格。
那麼如何在程式碼中去使用呢?
首先,建立一個建立異常的工具類
1 public class ExceptionUtil { 2 3 /** 4 * 獲取業務異常類 5 */ 6 public static BusinessException CreateBusinessException( 7 IErrorCode code) { 8 return new BusinessException(code); 9 } 10 11 /** 12 * 獲取帶資料格式化的業務異常類 13 * 14 * @param code 15 */ 16 public static BusinessException CreateFormatedBusinessException(BusinessErrorCode code, Object ... object){ 17 String str = code.value(); 18 str = String.format(str, object); 19 return new BusinessException(code.name(), str, ""); 20 } 21 22 }
在對應的業務方法捕獲並處理異常
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date; try { // 申請時間 date = sdf.parse(form.getApplyDateView()); } catch (ParseException e) { throw ExceptionUtil.CreateBusinessException(MyBusinessErrorCode.ERR_RBM_005); }
至此,業務異常就得到了優雅的處理。