方法中的JAVA try-catch块[已关闭]

问题描述 投票:0回答:1

我正在编写使用 JDBC 连接到 MySQL 数据库的代码。我发现自己使用这个 try-catch 块多次连接到数据库。我以几种不同的方法使用它。

try(Connection conn = DriverManager.getConnection(dbURL, dbUser, dbPassword);                                   
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query);                                                                    
        ) {
//here I use different code each time
        } catch (SQLException e) {
            e.printStackTrace();
        }

有没有办法让这个 try-catch 块成为一个方法,让我在 try 之后只为该块编写代码?

我希望你明白我的意思。 谢谢!

java jdbc methods try-catch
1个回答
2
投票

如果我理解正确的话,您需要一个提供由 try-catch 组成的框架的方法,并且您想在其中执行不同的操作。

我进一步假设,您想对结果集做一些事情。 正如 Gaël 指出的那样,接受

Function
会很方便。我让该方法接受函数返回的泛型 T。

public static <T> Optional<T> execute(final Function<ResultSet, T> mapper, final String query, final String dbURL, final String dbUser, final String dbPassword)
{
    try (Connection conn = DriverManager.getConnection(dbURL, dbUser, dbPassword))
    {
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        return Optional.ofNullable(mapper.apply(rs));
    }
    catch (SQLException e)
    {
        e.printStackTrace();
    }
    return Optional.empty();
}

吞并异常并不是最佳选择。

我还会考虑使用查询来柯里化函数。

© www.soinside.com 2019 - 2024. All rights reserved.