當我真的不希望 catch 塊回傳一個值時,我有點懷疑如何在 catch 塊中回傳一個值。
我正在嘗試創建一個 java 類“用戶”,它具有創建用戶帳戶并將其保存到 json 檔案的方法,如下所示:
private void saveAsJson() {
JSONObject newUser = new JSONObject();
newUser.put("name", this.name);
newUser.put("lastName", this.lastName);
newUser.put("password", this.password);
System.out.println(newUser);
try {
File jsonFile = new File("./data/Account.json");
fileIsEmpty(jsonFile); //void method checking if file is empty or already contains data.
getJsonArray(jsonFile);//method that should parse the contents of the jsonfile to a JSONArray.
//More code...
///
...
private JSONArray getJsonArray(File sourceFile) {
try {
FileReader fr = new FileReader(sourceFile);
JSONTokener tk = new JSONTokener(fr);
JSONObject jsonObj = new JSONObject(tk);
JSONArray jsonArr = jsonObj.getJSONArray("Accounts");
return jsonArr;
} catch (Exception e) {
System.out.println("Unable to read accounts in getJsonArray.");
return *what to return??*;
}
}
方法 JSONArray 只是為了讀取 json 檔案,并回傳陣列。FileReader 類要求我使用 try-catch,以防在嘗試讀取檔案時發生例外。但是,當該例外發生時,我根本不希望該方法回傳任何內容。該方法已在 try 塊中呼叫,因此我希望此父 try 塊處理例外,而不是繼續使用該方法的回傳值。
我該怎么辦。我應該回傳什么樣的值?像JSONArray fakeArray = new JSONArray(); return fakeArray;什么?回傳該值時會發生什么, saveAsJson() 是否繼續使用該空陣列,并弄亂了我的 json 檔案的結構?
需要明確的是:我確實理解這一點以及為什么必須有回傳值。getJsonArray 方法只期望回傳一個 JSONArray。我不知道如何最好地處理這個問題。
uj5u.com熱心網友回復:
不要抓到Exception。改為宣告該方法throws并讓該方法的呼叫者捕獲它。
// It's better to declare the specific type of the Exception instead of bare Exception
private JSONArray getJsonArray(File sourceFile) throws Exception {
FileReader fr = new FileReader(sourceFile);
JSONTokener tk = new JSONTokener(fr);
JSONObject jsonObj = new JSONObject(tk);
JSONArray jsonArr = jsonObj.getJSONArray("Accounts");
return jsonArr;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512956.html
標籤:爪哇例外试着抓返回值
上一篇:C 例外代碼與類
下一篇:如何捕獲匯入模塊中引發的錯誤
