Форма записи try-catch

145
04 января 2018, 23:17

Столкнулся с кодом:

    try (Connection conn = this.connect();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
       pstmt.setString(1, name);
       pstmt.setDouble(2, capacity);
       pstmt.executeUpdate();
   } catch (SQLException e) {
       System.out.println(e.getMessage());
   }

Почему Connection conn = this.connect();... записываются в скобках?
Она аналогична такой получается?

Connection conn = null;
PreparedStatement pstmt = null;
try {
    conn = this.connect();
    pstmt = conn.prepareStatement(sql)
    pstmt.setString(1, name);
    pstmt.setDouble(2, capacity);
    pstmt.executeUpdate();
} catch (SQLException e) {
    System.out.println(e.getMessage());
}
Answer 1

Нет, не аналогична. Вот если вы в добавленном блоке finaly закроете соединение, как это и положено делать , то тогда это будет аналогично. Первый вариант введен в java 7 и называется try-with-resources. Идея заключается в том, что блок try, отображенный в таком виде, сам вызывает метод close у истребуемых ресурсов после того, как они отработали, что часто забывают делать, как вы сейчас, соответственно, это является причиной проблем.

READ ALSO
С помощью JSOUP спарсить текст!

С помощью JSOUP спарсить текст!

Как мне достать весь текст из этого куска статьи? Обычным способом это не получается

171
СУБД Java и какую выбрать? [требует правки]

СУБД Java и какую выбрать? [требует правки]

Новичок и хотел бы узнать какую СУБД мне "учить"? Открыл hhru посмотрел и везде пишут просто: SQL, я знаю что это язык структурированных запросов,...

190
Java Servlet работа с Json

Java Servlet работа с Json

Недавно начал изучать servletНа данный момент на томкате развернут проект с одной jsp страничкой

168
Что означает “cache on-demand”?

Что означает “cache on-demand”?

Что означает "кэширование по принципу on-demand"?

207