java - 使用 Try With 资源

标签 java try-catch

我有一个 try catch block ,如下所示。我正在尝试将其转换为 Try-with-resource。但我无法这样做,因为我无法在较新的 try

中编写正常语句
        Connection connection = null;
        PreparedStatement preparedItemsStatement = null;
        ResultSet rs = null;
        String id = null;
        try {
            connection = getConnection();
            preparedItemsStatement = connection.prepareStatement(myQuery);
            preparedItemsStatement.setString(1, userId + "%");
            rs = preparedItemsStatement.executeQuery();
            if (rs != null && rs.next())
                id = rs.getString("SOME_ID");
        } catch (SQLException e) {
            throw new SQLException("Error running Database query ", e);
        } finally {
            try {
                if (rs != null)
                    rs.close();
                if (preparedItemsStatement != null)
                    preparedItemsStatement.close();
                if (connection != null)
                    connection.close();
            } catch (SQLException e) {
                throw new SQLException("Error running Database query ", e);
            }
        }

我尝试过的,

            try (
                Connection connection = getConnection();
                PreparedStatement preparedItemsStatement = connection.prepareStatement(myQuery);                
                preparedItemsStatement.setString(1, userId + "%");
                ResultSet rs = preparedItemsStatement.executeQuery();                 
            ) {           

            if (rs != null && rs.next())
                id = rs.getString("SOME_ID");
        } catch (SQLException e) {
            throw new SQLException("Error running Database query ", e);
        }

最佳答案

将它们分成两个try-with-resources:

try (
     Connection connection = getConnection();
     PreparedStatement preparedItemsStatement = connection.prepareStatement(myQuery);
    ) {
        preparedItemsStatement.setString(1, userId + "%");
        try (ResultSet rs = preparedItemsStatement.executeQuery()) {
           ...

try block 中的语句必须是声明类型为 AutoCloseable 的变量的语句。

关于java - 使用 Try With 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182281/

相关文章:

java - 我们应该为 Java 桌面应用程序中的任何 GUI 更新使用 EventQueue.invokeLater 吗?

c++ - 无法使用 C++ catch(...) 捕获访问冲突异常

JavaScript:Try/Catch 与作为参数传递的错误函数

c# - 以编程方式抑制 C# 中的异常

c# - 删除过多的 try-catch block

java - REST - 如何在 javax.ws.rs.core.Response 实体中显示某些 getter

java - 如何检查一个类的实例是否可以访问另一个类中的方法?

Java变量值作为新变量名

java - 使用 FTPClient 检查目录是否存在

java - ServerSocket 不适用于 try-with-resources?