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)文章
Java Web開(kāi)發(fā)防止多用戶重復(fù)登錄的完美解決方案
在web項(xiàng)目開(kāi)發(fā)中,很多情況下都可以讓同一個(gè)賬號(hào)信息在不同的登錄入口登錄很多次,這樣子做的不是很完善。一般解決這種情況有兩種解決方案,小編呢主要以第二種方式給大家介紹具體的實(shí)現(xiàn)方法,對(duì)java web 防止多用戶重復(fù)登錄的解決方案感興趣的朋友一起看看吧2016-11-11
使用JavaConfig代替xml實(shí)現(xiàn)Spring配置操作
這篇文章主要介紹了使用JavaConfig代替xml實(shí)現(xiàn)Spring配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringCloud使用Kafka Streams實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理
使用Kafka Streams在Spring Cloud中實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理可以幫助我們構(gòu)建可擴(kuò)展、高性能的實(shí)時(shí)數(shù)據(jù)處理應(yīng)用,Kafka Streams是一個(gè)基于Kafka的流處理庫(kù),本文介紹了如何在SpringCloud中使用Kafka Streams實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)處理,需要的朋友可以參考下2024-07-07
Java使用get請(qǐng)求接收List集合數(shù)據(jù)(json)并導(dǎo)出報(bào)表問(wèn)題
這篇文章主要介紹了Java使用get請(qǐng)求接收List集合數(shù)據(jù)(json)并導(dǎo)出報(bào)表問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
springboot配置resilience4j全過(guò)程
這篇文章主要介紹了springboot配置resilience4j全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
解決springboot運(yùn)行出現(xiàn)錯(cuò)誤:找不到或無(wú)法加載主類com.xxxx.xxxx.Application問(wèn)題
文章介紹了在服務(wù)器上運(yùn)行一個(gè)未使用的Java項(xiàng)目時(shí)遇到的“找不到或無(wú)法加載主類”錯(cuò)誤,并提供了兩種解決方法:通過(guò)Maven install或build …、Goals輸入install并跳過(guò)測(cè)試來(lái)重新構(gòu)建項(xiàng)目2024-11-11
JVM系列之:再談java中的safepoint說(shuō)明
這篇文章主要介紹了JVM系列之:再談java中的safepoint說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Maven的pom.xml文件結(jié)構(gòu)中的build
本文主要介紹了Maven的pom.xml文件結(jié)構(gòu)中的build,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

