如何防止交易在捕获时关闭(异常 e)?

How to prevent from transaction to close at the catch(Exception e)?

我正在尝试 运行 从 java 到 PosgresSQL 的查询,但我从 stmt.execute(sql)

中收到错误

我想执行一个新的查询来帮助我打印出失败的特定行,但是当我到达 catch (Exception e) 时事务被中止。

我无法创建新事务,因为我正在使用临时表。如何防止交易中止?

org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block

try (Statement stmt = data.db.getConnection().createStatement()) {
        //  data.db.getConnection().setSavepoint("sp01");
        // insert to fact table
        TableSchema factTableSchema = factInfo.getTableSchema();
        // build SQL
        String sql = "Select * From....";
        try {
            stmt.execute(sql); // this row is failing 
        }
        catch (Exception e) {
            try {
         // now i would like to run a query   only in case arrived here, but the transaction is closed
                      // how could i prevent from trasanction to close ?
                ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");
                Log.debug("");
            }
            catch (Exception e2) {
                Log.debug("");
            }
        }

在执行查询之前在第二个 try 块中创建一个新语句。

Statement stmt = data.db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");

ResultSet 需要连接并处于活动状态才能执行 next();