摘要:故其承載的功能主要是多語異常列表。多語系統(tǒng)的異常按業(yè)務(wù)功能區(qū)分,每個業(yè)務(wù)功能一個,下面以數(shù)據(jù)導入為例進行說明。多語包異常消息構(gòu)造體其方法即多語支持,在方法中進行語言判斷。
WMS系統(tǒng)異常體系結(jié)構(gòu) 前言
WMS系統(tǒng)的異常均繼承自RuntimeException, 主要作用于業(yè)務(wù)處理中異常信息的收集。故其承載的功能主要是 1.多語 2.異常列表。下面就以這兩個功能分別進行描述。
多語WMS系統(tǒng)的異常按業(yè)務(wù)功能區(qū)分,每個業(yè)務(wù)功能一個,下面以數(shù)據(jù)導入為例進行說明。
public class DataImportException extends BizException { private static final long serialVersionUID = 1L; //多語包 private static ResourceBundle resourceBundle = ResourceBundle.getBundle("exceptionConfig-import", locale); private static ResourceBundle usEnResourceBundle = ResourceBundle.getBundle("exceptionConfig-import", usLocale); //異常消息CODE public static final String ERR_IMPORT_METADATA_ORG_NOT_UNIQUE = "ERR_IMPORT_METADATA_ORG_NOT_UNIQUE"; public static final String ERR_TALLYHEADER_EXIST = "ERR_TALLYHEADER_EXIST"; //構(gòu)造體 public DataImportException(String code, String... values) { super(code, getMessage(code), values); } public static String getMessage(@NotNull String key) { switch (WmsStatic.getLanguage()) { case ZH : return getCnMessage(key); case EN : return getEnMessage(key); default : return getCnMessage(key); } } private static String getCnMessage(String key) { try { return resourceBundle.getString(key); } catch (MissingResourceException e) { logger.warn("DataImportException: " + key + "CN no named"); return NO_NAMED_EXCEPTION; } } private static String getEnMessage(String key) { try { return usEnResourceBundle.getString(key); } catch (MissingResourceException e) { logger.warn("DataImportException: " + key + "EN no named"); return getCnMessage(key); } }
其getMessage方法即多語支持,在方法中進行語言判斷。
異常列表在BizException中,維護了一個列表,用于對多個異常信息的保存。
public class BizException extends GeniDcException { private ListerrorList = new ArrayList (); //按values順序替換message中的[] public BizException(String code, String message, String... values) { ClientMessage clientMessage = new ClientMessage(); clientMessage.setCode(code); String msg = null; if ((NO_NAMED_EXCEPTION.equalsIgnoreCase(message)) && values.length > 0) { msg = values[0]; } else { msg = parseMessage(message, values); } clientMessage.setMessage(msg); clientMessage.setMessageCN(msg); this.errorList.add(clientMessage); // 統(tǒng)一記錄下錯誤信息 logger.info(this.toString()); } //無須替換 public BizException(Long id, String code, String message) { ClientMessage clientMessage = new ClientMessage(); clientMessage.setId(id); clientMessage.setCode(code); clientMessage.setMessage(message); clientMessage.setMessageCN(message); this.errorList.add(clientMessage); // 統(tǒng)一記錄下錯誤信息 logger.info(this.toString()); } //將map的值替換message中的[] public BizException(Long id, String code, @NotNull String message, Map, ?> map) { ClientMessage clientMessage = new ClientMessage(); clientMessage.setId(id); clientMessage.setCode(code); clientMessage.setContent(map); clientMessage.setMessage(message); clientMessage.setMessageCN(parseMessageFromMap(code, message, map)); this.errorList.add(clientMessage); // 統(tǒng)一記錄下錯誤信息 logger.info(this.toString()); } private static String parseMessage(String message, @NotNull String... values) { if (values.length == 0) { return message; } message = message.replaceAll("[", "{").replaceAll("]", "}"); Pattern pattern = Pattern.compile("{(.*?)}"); Matcher matcher; for (String value : values) { matcher = pattern.matcher(message); value = Matcher.quoteReplacement(value); message = matcher.replaceFirst("[" + value + "]"); } return message; } public BizException(@NotNull List errorList) { this.errorList.addAll(errorList); } private String parseMessageFromMap(String expCode, @NotNull String message, @Nullable Map, ?> map) { String[] splits = message.split("["); if (splits.length > 0) { for (int i = 0; i < splits.length; i++) { if (splits[i].indexOf("]") > 0) { String mapKey = splits[i].substring(0, splits[i].indexOf("]")); String mepValue = ""; if (map == null) { mepValue = "[]"; } else if (map.containsKey(mapKey)) { mepValue = "[" + String.valueOf(map.get(mapKey)) + "]"; } else { logger.warn("when throw exception[" + expCode + "], you hadn"t set key [" + mapKey + "] and value into map "); } // replaceAll之前, 對特殊字符的處理 mepValue = Matcher.quoteReplacement(mepValue); message = message.replaceAll("[" + mapKey + "]", mepValue); } } return message; } else { return message; } } }
最終,Exception對象成了維護異常信息的容器。
結(jié)構(gòu)圖
總的來說, BizExcetion 維護了異常信息列表,DataImportException 支持了多語
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70736.html
摘要:前言目前系統(tǒng)剛啟動,骨架剛剛搭建完成,在項目中,使用了一些切面,做一些業(yè)務(wù)無關(guān)的處理。在現(xiàn)在的項目里面,分別在,調(diào)用,分頁,處理,均使用到了切面。希望本文的閱讀者也不吝將項目中使用的切面分享出來。 前言 目前系統(tǒng)剛啟動,骨架剛剛搭建完成,在項目中,使用了一些切面,做一些業(yè)務(wù)無關(guān)的處理。在本文中,將各個切面例舉出來,用以加深自己對切面的理解。記得在初學切面的時候,一般文章介紹切面的時候,...
摘要:指向的主要是實現(xiàn)和通信的。子不能單獨存在,需附屬特定的父。系統(tǒng)需申明權(quán)限才能創(chuàng)建。和類似,同樣是通過來實現(xiàn)。將添加到中顯示。方法完成的顯示。執(zhí)行的檢查參數(shù)等設(shè)置檢查將保存到中將保存到中。因為通過和的將無法獲取到從而導致失敗。 目錄介紹 10.0.0.1 Window是什么?如何通過WindowManager添加Window(代碼實現(xiàn))?WindowManager的主要功能是什么? 1...
摘要:生產(chǎn)環(huán)境服務(wù)器環(huán)境搭建安裝安裝在系統(tǒng)中通過以下命令輸入查看是否安裝正確,輸出如下創(chuàng)建發(fā)布目錄,并給出相應(yīng)的權(quán)限服務(wù)器和后臺文件夾上傳前端文件夾改變文件所有權(quán)文件的所有權(quán)變?yōu)榧尤雲(yún)?shù),文件夾以及文件夾里的所有 生產(chǎn)環(huán)境服務(wù)器環(huán)境搭建 安裝jdk 安裝 openjdk-8-jdk 在 ubuntu-16.04 系統(tǒng)中通過以下命令: 1.sudo add-apt-repository pp...
閱讀 1755·2021-11-18 13:20
閱讀 1140·2021-10-11 10:59
閱讀 2987·2021-08-24 10:01
閱讀 3499·2019-08-29 14:21
閱讀 3351·2019-08-29 14:15
閱讀 3512·2019-08-26 12:23
閱讀 3342·2019-08-26 11:46
閱讀 3344·2019-08-26 11:35