2011-11-16 23 views
8

私はSQLExceptionをキャッチする私のアンドロイドのアプリケーションのいくつかのコードがありますが、私は最近それがSQLiteExceptionをキャッチしていないことがわかった。明らかに、SQLiteExceptionはSQLExceptionの子です。なぜそれが捕捉されないのですか?ここで私が使用しているコードがあります。なぜSQLExceptionがSQLiteExcpetionをキャッチしないのですか?

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

私はSQLiteExceptionをキャッチすべきであると私の仮定は正しいですか?

私はこのコードをアクティビティ内ではなく、Applicationクラスを拡張するクラスの内部で使用しています。

補足として、私は追加してcatch(Exception e){}を追加して動作するかどうかを確認しましたが、実際には期待どおりに動作していました。

+1

実際には非常に興味深い質問です。実際にはSQLExceptionのサブクラスであるため、http://developer.android.com/reference/android/database/sqlite/SQLiteException.html –

答えて

16

のSQLExceptionの2つのタイプがあります。

android.database.SQLException 
java.sql.SQLException 

あなたは最初ない二を使用していることを確認してください。

+2

ありがとう、私は確かにjava.sql.SQLExceptionを使用していた。 Eclipseに注意してください! – Pzanno

+0

私は午後に教育を受けるのが好きです。 〜のような匂い... * facepalmの学習*。 –

3

私はSQLiteExceptionをキャッチする必要があります私の仮定は正しいですか?

java.sql.SQLExceptionまたはandroid.database.SQLExceptionについてお聞きしますか?

SQLiteExceptionandroid.database.SQLExceptionです。輸入品を確認してください。

+0

あなたは正しかった、私はJavaをキャッチしていた.SQLSQLException、ありがとうございます。 – Pzanno

関連する問題