没有catch或finally块的嵌套try块是否正常,让外部catch块处理嵌套try块中的异常?
类似的东西:
try (Connection con = ds.getConnection();
PreparedStatement ps = con.prepareStatement(sql);) {
//nested try block without a catch or finally block
try (ResultSet rs = ps.executeQuery();) {
while (rs.next()) {
list.add(rs.getInt("id"));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
如果您删除“尝试”'结果集不会自动关闭。
try-with-resources语句在最终隐藏中执行rs.close。
最好关闭结果集,打开结果集可能会导致问题:java.sql.SQLException: - ORA-01000: maximum open cursors exceeded
此示例中的异常捕获问题是如何区分数据源异常,查询创建异常或查询执行SQLExceptions?当我的数据源无法提供连接时,我可能会抛出特定的RuntimeException。
答案 1 :(得分:0)
No. Your code won't compile.
必须使用try
和/或catch(..)
跟踪每个finally
块(甚至嵌套)。
在您的情况下,如果您想处理任何其他额外的例外,请添加第二个catch块。
示例代码:
try {
// code which may throw exceptions
} catch(Exception e1) {
// e1 specific code
} catch (Exception e2) {
// e2 specific code
} finally {
// Optional. Executes whether exception thrown or not!
}