Java终于阻止了问题

| 是否有内置的方法来确定finally块中是否刚从catch块出来?我知道可以使用下面的变量轻松完成此操作,但是我只是想知道是否存在标准的内置方法。
boolean bException = false;
try
{
    dbf = new DBFunctions();
    dbf.db_run_query(query2);
    dbf.rs.next();
    nMonth = dbf.rs.getInt(\"calquarter\") * 3;
    nYear = dbf.rs.getInt(\"calyear\");

}
catch (SQLException sqle)
{
    out.println(sqle.toString());
    bException = true;
}
finally
{
    dbf.closeConnection();
    if (bException == true)
        return;
}
更新:这是closeConnection()方法的内容,该方法只是试图关闭所有数据库对象:
public void closeConnection()
{

    if (rs != null)
    {
        try { rs.close(); } catch (SQLException e) { ; }
        rs = null;
    }

    if (stmt != null)
    {
        try { stmt.close(); } catch (SQLException e) { ; }
        stmt = null;
    }

    if (con != null)
    {           
        try { con.close(); } catch (SQLException e) { ; }
        con = null;
    }



}
    
已邀请:
据我所知。但是,在这种情况下,将
return
放在
catch
块中可能会更好。
finally
块仍将运行。     
没有标准的方法-语言无法区分作为正常终止或正常终止的一部分而调用的finally块。 我偶尔需要这种模式。不在异常发生时设置标志,而是将其设置在普通代码的末尾。
boolean success = false;
try
{
   doStuff();
   success = true;
}
finally
{
   if (!success)
   {
      // there was an exception
   }
}
然后,您的finally块将知道是从正常终止还是异常终止中调用了它。 编辑:最好不要在finally块中返回,因为它会吞噬异常。从代码(或从语言规范!)看,这是隐式的并且不清楚。如所写,您的finally块将阻止SQLException的传播。如果那是您想要的,则对catch块执行此操作以使其明确。请参阅从Java中的finally块返回。     
据我所知,这是没有办法的。 首先,
finally
块的目的是执行无论是否存在异常都必须执行的操作。     

要回复问题请先登录注册