IllegalStateException
いくつかの変数がnullでないことを必要とするコードのチャンクを実行している場合、たとえば次のようなコンテンツプロバイダーdelete()
関数で、Androidアプリケーションにをスローすることは有効でしょうか。
public int delete(Uri uri, String where, String[] whereArgs) {
try {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
int count;
switch (sUriMatcher.match(uri)) {
case NOTES:
count = db.delete(NOTES_TABLE_NAME, where, whereArgs);
break;
case NOTE_ID:
String noteId = uri.getPathSegments().get(1);
count = db.delete(NOTES_TABLE_NAME, NoteColumns._ID + "=" + noteId
+ (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : ""), whereArgs);
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
} catch (NullPointerException e) {
// We really shouldn't get any null pointers!
throw new IllegalStateException();
}
}
なぜなら、可能性は非常に低いですが、次の変数がNULLになる可能性はわずかです。
- mOpenHelper
- db
- getContext()
- getContentResolver()
それともこれは虐待IllegalStateException
ですか?私がこれをやりたい理由は、この関数が単にスローするのは間違っているように見えるからNullPointerExceptions
です。