ваш ответ не имеет отношения к вопросу

о, я понял, что действительно задал слишком много вопросов, не внося свой вклад в сообщество, но я хочу узнать ваше мнение по этому поводу. Скажи если есть

private void closeAll(ResultSet rs, PreparedStatement ps, Connection con) {
    if (rs != null)
        try {
            rs.close();
        } catch (SQLException e) {
        }
    if (ps != null)
        try {
            ps.close();
        } catch (SQLException e) {
        }
    if (con != null)
        try {
            con.close();
        } catch (SQLException e) {
        }
}

и я хотел сделать несколько операций с моей базой данных MySQL, используя одно соединение. Лучше написать

Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
    ps = con.prepareStatement(...);
    rs = ps.executeQuery();
    if (rs.next()) ...;
} catch (SQLException e) {
    System.err.println("Error: " + e);
} finally {
    closeAll(rs, ps, null);
}
try {
    ps = con.prepareStatement(...);
    rs = ps.executeQuery();
    if (rs.next()) ...;
} catch (SQLException e) {
    System.err.println("Error: " + e);
} finally {
    closeAll(rs, ps, con);
}

или же

Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
    ps = con.prepareStatement(...);
    rs = ps.executeQuery();
    if (rs.next()) ...;
    rs.close();
    ps.close();

    ps = con.prepareStatement(...);
    rs = ps.executeQuery();
    if (rs.next()) ...;
} catch (SQLException e) {
    System.err.println("Error: " + e);
} finally {
    closeAll(rs, ps, con);
}

Я считаю, что лучше иметь в виду либо более безопасный, более четкий, более краткий или более надежный. Я не уверен, будет ли последний всегда закрывать те подготовленные операторы и наборы результатов, которые открыты всякий раз, когда он встречает исключение, хотя я полагаю, что это выглядит более кратким. Но первый выглядит лучше, так как он более последовательный, но при этом увеличивает накладные расходы, поскольку использует больше блоков try finally.

Я понимаю, что часть автоматического управления ресурсами Java 7 Project Coin заставит меня склоняться к первому, поскольку ресурсы, используемые в заголовке, неявно являются окончательными в теле. Тем не менее, у меня есть достаточно времени, прежде чем мне придется беспокоиться о пересмотре своего кода, чтобы адаптировать его к ARM и иметь возможность удалить шаблонный код, поэтому остается вопрос: из двух вышеописанных стилей, что было бы лучше? Если они оба будут выполнять ожидаемое поведение, то даст ли последний заметный прирост производительности, который извинит «более уродливый» стиль?

Ответы на вопрос(3)

Ваш ответ на вопрос