0
例如,我有這樣的事情:如何在SQLite/Java/Android中正確處理這些錯誤?
public void saveFoodatas(List<Foodata> foodataList) {
DatabaseHelper.database.beginTransaction();
try {
for (Foodata foodata : foodataList) {
saveFoodata(foodata);
}
DatabaseHelper.database.setTransactionSuccessful();
}
finally {
DatabaseHelper.database.endTransaction();
}
}
哪裏DatabaseHelper
是延長SQLiteOpenHelper
和database
一類是SQLiteDatabase
。
在這個函數中,我試圖讓它保存/提交很多對象到數據庫,但是如果出現故障,那麼請不要提交任何更改。
我相信,它目前設置做正確(如果有錯誤,它離開try
塊我覺得直去finally
,因爲沒有catch
),但我的問題是如何正確地觸發失敗情況。我需要saveFoodata
「拋出異常」嗎?如果該函數在沒有進行任何try/catch/throwing的情況下遇到某種失敗,那麼這也算得上嗎?我如何處理saveFooData()
?
這就是我想了解的。在我的代碼中,我沒有打算/預見/做任何事情,'saveFoodata'中發生錯誤有什麼區別?這些錯誤會停止應用程序嗎?如果我決定以某種方式解釋它們,我該如何中止交易/拋出異常? – user6872907
@ user6872907如果saveFoodata()的任何方法調用拋出一個檢查的異常,那麼你將得到一個編譯錯誤。另一方面,如果任何拋出運行時異常,你的應用程序將崩潰。 –
@ user6872907 try ... finally是錯誤發生時清理的正確方法。調用saveFoodatas()的任何方法都需要捕獲可能發生的任何異常。 –