我正在撰寫一個運行時間很慢的面向內部的工具。由于這個運行時,我試圖驗證輸入的錯誤,并在實際運行該工具之前向客戶端發送一個包含每個丟失或失敗元素的詳細串列的 JSON 物件。
我想知道是否有辦法修改 java Exception 的錯誤訊息回傳型別,以便我可以在錯誤中拋出這個 HashMap。
包含錯誤的哈希圖看起來像這樣:
Error: {
Message: "Your X is configured improperly, please fill out the required fields before running this tool",
formXErrors: {
Message: "The following fields are missing from formX",
Error: {
field1Name: "field 1",
field2Name: "field 2",
...
},
formYErrors: {
Message: "The following fields are missing from formY",
Error: {
field1Name: "field 1",
field2Name: "field 2",
...
}
}
}
然后如果發現錯誤,我想像這樣拋出它(將 HashMap 傳遞到訊息欄位而不是字串中):
if (errorHashMap != null) {
throw new ToolXException(errorHashMap);
}
Java 對我來說有點新,所以我想知道是否有人可以指點我找到一種方法來實作這種行為。甚至有可能嗎?或者是回傳這個HashMap而不是拋出的唯一方法,并將其發送給客戶端?
提前致謝!
uj5u.com熱心網友回復:
您無法編輯訊息的型別,但您當然可以將您喜歡的任何型別的欄位添加到自定義Exception型別。
class ToolXException extends Exception {
private final Map<Key, Value> map;
public Map<Key, Value> getMap() { return map; }
public ToolXException(Map<Key, Value> map) {
this.map = map;
}
}
......然后你可以把它拿出來并在你抓住它時以你喜歡的方式展示它:
try {
...
} catch (ToolXException e) {
doSomethingWith(e.getMap());
}
uj5u.com熱心網友回復:
這是絕對可能的。他們的方式來做到這一點是創建一個子類拋出的一個子類的:Exception,RuntimeException或Error。您需要考慮的另一件事是您是否要將自定義例外鏈接到捕獲的例外,或者它是否應該獨立于“根本原因”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/381015.html
上一篇:為什么分段錯誤不可恢復?
下一篇:如何從C 上的分段錯誤中恢復?
