Нет ошибки компилятора / предупреждения для не ловить / бросать исключение

я не понимаю, почему компилятор не предупредил меня о том, чтобы не ловить или бросать SQLException. Вот ситуация:

я определил этот интерфейс:

public interface GenericDatabaseManager {
    public void createTables(DataBase model) throws SQLException;
}

затем я создал этот класс, который реализует данный интерфейс:

public class SqliteHelper extends SQLiteOpenHelper implements
        GenericDatabaseManager {

    @Override
    public void createTables(DataBase model) throws SQLException {
        // Code that throws SQLException
    }

и, наконец, я вызываю этот SqliteHelper.createTables () отсюда:

public class DatabaseManager extends CoreModule {
    private boolean createUpdateDB(final String dbString, final String appId) {
        // Previous code...

        if (oldVer == -1) {
            dbCoreModel.addModel(dbModel);
            dbCoreModel.getManager().createTables(dbModel);
            return true;
        }

        // More code...
    }

}

dbCoreModel.getManager() возвращает GenericDatabaseManager экземпляра. Но компилятор не показывает ошибки на dbCoreModel.getManager().createTables(dbModel); линия, хотя эта строка бросает SQLException.

кто-нибудь есть идея о том, почему это происходит? Спасибо заранее.

редактировать: о SQLException не нужно быть пойманным, потому что это RuntimeException. это неправда. Вот пример:

import java.sql.SQLException;

interface Interface {
    public void throwsSQLException() throws SQLException;
}

class Test implements Interface {

    @Override
    public void throwsSQLException() throws SQLException {
        throw new SQLException();
    }
}

public class Main {

    public static void main(String[] args) {
        Interface i = new Test();
        i.throwsSQLException();
        System.out.println("Finished");
    }

}

компилятор показывает ошибку в i.throwsSQLException(); в этом случае.

1 ответов


android.database.SQLException это исключение на этапе выполнения.

в java не нужно ловить или объявлять броски для исключений времени выполнения. Читайте подробное описание о RuntimeExceptions в java здесь