Java 如何優(yōu)雅的拋出業(yè)務(wù)異常
記得上學的時候?qū)W習英語,每個英語老師說到英語翻譯的時候都會說英語翻譯要做到“信、達、雅”。如今做了一名程序員竟然體會我還是想用這三種境界來要求自己,恰逢自己現(xiàn)在所做之項目偏業(yè)務(wù),代碼的優(yōu)雅顯得格外重要。所以我就想寫點這方面的東西,今天就先來說說如何優(yōu)雅的拋出業(yè)務(wù)異常。代碼千千萬,只希望對自己和對大家有所幫助。
針對java開發(fā)者而言,異常的重要性不言而喻,這里也不再贅述。今天主要說說在業(yè)務(wù)中利用異常處理機制來實現(xiàn)業(yè)務(wù)異常的優(yōu)雅提示。
首先,我們定義一個異常編碼接口
public interface IErrorCode { public String value(); }
重點來了,我們?nèi)崿F(xiàn)這個接口
import java.util.EnumMap; import com.test.IErrorCode; public enum MyBusinessErrorCode implements IErrorCode { /** * 角色不存在或已被刪除 */ ERR_MODEL_001, /** * 角色編碼已存在 */ ERR_MODEL_002; private static EnumMap<MyBusinessErrorCode, String> errorCodeMap = new EnumMap<MyBusinessErrorCode, String>( MyBusinessErrorCode.class); static { errorCodeMap.put(ERR_MODEL_001, "角色不存在!"); errorCodeMap.put(ERR_MODEL_002, "角色編碼已存在!"); } public String value() { return errorCodeMap.get(this); } }
下面我們來說說這段代碼好在哪里,
- 統(tǒng)一定義異常提示,易于維護,易于國際化配置化。
- 采用枚舉Map運行效率更高。
- 代碼邏輯清晰,更容易上手,更容易統(tǒng)一風格。
那么如何在代碼中去使用呢?
首先,創(chuàng)建一個創(chuàng)建異常的工具類
public class ExceptionUtil { /** * 獲取業(yè)務(wù)異常類 */ public static BusinessException CreateBusinessException( IErrorCode code) { return new BusinessException(code); } /** * 獲取帶數(shù)據(jù)格式化的業(yè)務(wù)異常類 * * @param code */ public static BusinessException CreateFormatedBusinessException(BusinessErrorCode code, Object ... object){ String str = code.value(); str = String.format(str, object); return new BusinessException(code.name(), str, ""); } }
在對應(yīng)的業(yè)務(wù)方法捕獲并處理異常
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); }
至此,業(yè)務(wù)異常就得到了優(yōu)雅的處理。
以上就是Java 如何優(yōu)雅的拋出業(yè)務(wù)異常的詳細內(nèi)容,更多關(guān)于java 拋出業(yè)務(wù)異常的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼
本篇文章主要介紹了消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08Spring中如何獲取request的方法匯總及其線程安全性分析
這篇文章主要給大家介紹了關(guān)于Spring中如何獲取request的方法匯總及其線程安全性分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-04-04Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法詳解
這篇文章主要介紹了Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法,結(jié)合實例形式分析了java分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、跳轉(zhuǎn)語句等相關(guān)概念、原理、使用技巧與操作注意事項,需要的朋友可以參考下2020-02-02Spring中網(wǎng)絡(luò)請求客戶端WebClient的使用詳解
作為替代,Spring 官方已在 Spring 5 中引入了 WebClient 作為非阻塞式 Reactive HTTP 客戶端,本文將通過樣例演示如何使用 WebClient,希望對大家有所幫助2024-04-04SpringBoot高級配置之臨時屬性、配置文件、日志、多環(huán)境配置詳解
這篇文章主要介紹了SpringBoot高級配置之臨時屬性、配置文件、日志、多環(huán)境配置,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02