Мне просто было интересно узнать о какой-то странной обработке «бросков» в среде Android, и я нашел этот старый вопрос здесь.
Аскер Джон"начал писать код для выполнения некоторых запросов к базе данных", поэтому, возможно, он заметил то же самое, что и я.
Компилируется без ошибок:
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DbMeta.T_DISGUISED.T_CREATE);
}
Несмотря на это объявление (во всплывающем окне javadoc):
void android.database.sqlite.SQLiteDatabase.execSQL(String sql) throws SQLException
Итак, во-первых, monkjack прав, когда указывает, что сигнатура метода onCreate
не может быть изменена путем наследования реализаций.
А во-вторых, Zeki правильно указывает на разницу между отмеченными и непроверенными исключениями.
А теперь, в-третьих, я хочу добавить, что большая путаница вызвана SQLException
.
SQLException
, используемый в приведенном выше примере, является типом Android android.database.SQLException
и наследует java.lang.RuntimeException
- это непроверенное исключение! Не требуется декларация бросков !!!
Это не классический java.sql.SQLException
- это java.lang.Exception
и требует try / catch / throws.