Дерево исключений для sqlite3 в Java - PullRequest
0 голосов
/ 19 октября 2019

Справочная информация: я пытаюсь использовать небольшую базу данных в памяти в приложении. Имена таблиц и столбцы указываются на карте, и является ли столбец целым числом в списке (если нет в списке, то это текст). Я могу создать связь в порядке. При попытке вызвать методы соединения «createStatement ()» и «execute ()», они работают нормально, если заключены в структуру try / catch. Однако, если я попытаюсь распространить исключение SQLEx вверх по иерархии вызовов, затмение жалуется на «необработанное исключение SQLException». Должно быть, так, как я использую карту. Может кто-нибудь помочь мне понять, в чем разница между двумя подходами? Спасибо.

private void createTables () throws SQLException {
    tableColumns.forEach((tableName, columnNames) -> {
        StringJoiner sj = new StringJoiner(",\n");
        for (String colName : columnNames) {
            if (iColNames.contains(colName)) {
                sj.add ("\t" + colName + " integer"); 
            } else {
                sj.add ("\t" + colName + " text not null");
            }
        }
        String sql = "create table " + tableName + "(\n" + sj.toString() + "\n);";
        System.out.println (sql);
        Statement stmt;
//          try {
                stmt = conn.createStatement();
                stmt.execute(sql); 
//          } catch (SQLException e) {
//              e.printStackTrace();
//          }  
        });
    }

Вот что вызывает метод:

public RunIdMap (String dbFileName) throws SQLException, ClassNotFoundException  {
    Class.forName("org.sqlite.JDBC");
    conn = DriverManager.getConnection("jdbc:sqlite:" + dbFileName);
    createTables ();
}

1 Ответ

0 голосов
/ 19 октября 2019

Итак, когда вы распространяете исключение вверх по стеку вызовов, обрабатываете ли вы там исключение?

Исключение нужно где-то обрабатывать, поэтому, когда вы распространяете исключение вверх по стеку вызовов, выдаетнеобходимо обработать исключение в месте вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...