java 错误码设计_JAVA端的错误码和错误信息,该设计成全局常量还是枚举值?
有以下2種解決方案:
1、封裝成一個對象,例如:
public final class Result {
private Result(String code, String msg){
this.code = code;
this.msg = msg;
}
// ignore setter and getter
private String code;
private String msg;
public static final FE_PRC_BACK_001 = new Result("FE_PRC_BACK_001", "TargetUri is not exist");
public static final ...
}
2、用枚舉實現(xiàn),如下:
public enum Result {
FE_PRC_BACK_001("FE_PRC_BACK_001", "TargetUri is not exist"),
...;
// ignore setter and getter and constructor
private String code;
private String msg;
}
1和2的實現(xiàn)思路其實是差不多的(跟題主給出的代碼思路也是差不多的,差別只是使用具體的DTO還是通用的Map),但使用枚舉的時候有以下幾個地方要注意:
假設(shè)枚舉Result存在于base-api中,版本1.0.0,分別有A、B項目,A項目依賴B項目,A、B項目均依賴base-api
1、如果B項目升級base-api至1.0.1,且Result新增了一個枚舉量,并且B項目某接口返回了這個新增的枚舉量,而A項目在沒有升級base-api的情況下,如果調(diào)用到該接口并返回了新增的枚舉量,則會報反序列化異常,因為新增的枚舉量在舊版本的base-api里并不存在;
2、JSON序列化的時候,默認(rèn)是把枚舉序列化成枚舉變量名稱,如果想序列化成自定義的格式(例如包含msg),則需要自定義一個序列化器。
總結(jié)
以上是生活随笔為你收集整理的java 错误码设计_JAVA端的错误码和错误信息,该设计成全局常量还是枚举值?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java sqlite3查询慢_java
- 下一篇: mysql表变量临时表_sql serv
