2011-11-16 102 views
8

我在我的一個android應用程序中捕獲了一些SQLException的代碼,但是我最近發現它沒有捕獲SQLiteException。顯然,SQLiteException是SQLException的一個子組件,爲什麼它不被捕獲?以下是我正在使用的一些代碼。爲什麼SQLException沒有捕獲SQLiteExcpetion?

try { 
    ... // something here that will throw an SQLiteException 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 

我的假設是否正確,我應該捕捉SQLiteException?

如果它很重要,我使用的代碼不在Activity的內部,而是在擴展Application類的類中。

作爲一個方面說明,我確實增加了一個額外的catch(Exception e){}以查看這是否會起作用,並且確實按預期工作。

+1

實際上一個相當有趣的問題......因爲它確實是SQLException的一個子類:http://developer.android.com/reference/android/database/sqlite/SQLiteException.html –

回答

16

有兩種類型的SQLException的:

android.database.SQLException 
java.sql.SQLException 

確保您使用的是第一沒有第二個。

+2

謝謝,我的確在使用java.sql.SQLException。謹防Eclipse! – Pzanno

+0

我喜歡下午接受教育的氣味。聞起來像... * facepalm學習*。 –

3

我的假設是正確的,我應該捕獲SQLiteException?

你在說什麼java.sql.SQLExceptionandroid.database.SQLException

SQLiteException延伸android.database.SQLException。檢查你的進口。

+0

你說得對,我抓到了java .sql.SQLException,謝謝。 – Pzanno

相關問題