Java 如何優(yōu)雅的拋出業(yè)務(wù)異常
記得上學(xué)的時(shí)候?qū)W習(xí)英語(yǔ),每個(gè)英語(yǔ)老師說(shuō)到英語(yǔ)翻譯的時(shí)候都會(huì)說(shuō)英語(yǔ)翻譯要做到“信、達(dá)、雅”。如今做了一名程序員竟然體會(huì)我還是想用這三種境界來(lái)要求自己,恰逢自己現(xiàn)在所做之項(xiàng)目偏業(yè)務(wù),代碼的優(yōu)雅顯得格外重要。所以我就想寫(xiě)點(diǎn)這方面的東西,今天就先來(lái)說(shuō)說(shuō)如何優(yōu)雅的拋出業(yè)務(wù)異常。代碼千千萬(wàn),只希望對(duì)自己和對(duì)大家有所幫助。
針對(duì)java開(kāi)發(fā)者而言,異常的重要性不言而喻,這里也不再贅述。今天主要說(shuō)說(shuō)在業(yè)務(wù)中利用異常處理機(jī)制來(lái)實(shí)現(xiàn)業(yè)務(wù)異常的優(yōu)雅提示。
首先,我們定義一個(gè)異常編碼接口
public interface IErrorCode { public String value(); }
重點(diǎn)來(lái)了,我們?nèi)?shí)現(xiàn)這個(gè)接口
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); } }
下面我們來(lái)說(shuō)說(shuō)這段代碼好在哪里,
- 統(tǒng)一定義異常提示,易于維護(hù),易于國(guó)際化配置化。
- 采用枚舉Map運(yùn)行效率更高。
- 代碼邏輯清晰,更容易上手,更容易統(tǒng)一風(fēng)格。
那么如何在代碼中去使用呢?
首先,創(chuàng)建一個(gè)創(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, ""); } }
在對(duì)應(yīng)的業(yè)務(wù)方法捕獲并處理異常
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date; try { // 申請(qǐng)時(shí)間 date = sdf.parse(form.getApplyDateView()); } catch (ParseException e) { throw ExceptionUtil.CreateBusinessException(MyBusinessErrorCode.ERR_RBM_005); }
至此,業(yè)務(wù)異常就得到了優(yōu)雅的處理。
以上就是Java 如何優(yōu)雅的拋出業(yè)務(wù)異常的詳細(xì)內(nèi)容,更多關(guān)于java 拋出業(yè)務(wù)異常的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
消息隊(duì)列 RabbitMQ 與 Spring 整合使用的實(shí)例代碼
本篇文章主要介紹了消息隊(duì)列 RabbitMQ 與 Spring 整合使用的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Spring中如何獲取request的方法匯總及其線程安全性分析
這篇文章主要給大家介紹了關(guān)于Spring中如何獲取request的方法匯總及其線程安全性分析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法詳解
這篇文章主要介紹了Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法,結(jié)合實(shí)例形式分析了java分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、跳轉(zhuǎn)語(yǔ)句等相關(guān)概念、原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02Spring中網(wǎng)絡(luò)請(qǐng)求客戶端WebClient的使用詳解
作為替代,Spring 官方已在 Spring 5 中引入了 WebClient 作為非阻塞式 Reactive HTTP 客戶端,本文將通過(guò)樣例演示如何使用 WebClient,希望對(duì)大家有所幫助2024-04-04SpringBoot高級(jí)配置之臨時(shí)屬性、配置文件、日志、多環(huán)境配置詳解
這篇文章主要介紹了SpringBoot高級(jí)配置之臨時(shí)屬性、配置文件、日志、多環(huán)境配置,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02mybatis嵌套循環(huán)map方式(高級(jí)用法)
這篇文章主要介紹了mybatis嵌套循環(huán)map方式(高級(jí)用法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01java讀取Excel導(dǎo)入去除空行簡(jiǎn)單方法
這篇文章主要給大家介紹了關(guān)于java讀取Excel導(dǎo)入去除空行的簡(jiǎn)單方法,在日常開(kāi)發(fā)中,想必都遇到過(guò)批處理的需求,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下2023-07-07