Java 没有catch或finally块的嵌套try块
如果嵌套的try块中没有catch或finally块,则让外部catch块处理嵌套try块中的异常(如果有),这样可以吗 比如:Java 没有catch或finally块的嵌套try块,java,try-catch,Java,Try Catch,如果嵌套的try块中没有catch或finally块,则让外部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.e
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();
}
如果删除“尝试”,结果集将不会自动关闭 try with resources语句排序在一个隐藏的finally中执行rs.close 关闭resultset是一种很好的做法,打开resultset可能会导致以下问题:
本例中异常捕获的问题是如何区分数据源异常、查询创建异常或查询执行异常?当我的数据源无法提供连接时,我可能会抛出一个特定的RuntimeException 如果删除“尝试”,结果集将不会自动关闭 try with resources语句排序在一个隐藏的finally中执行rs.close 关闭resultset是一种很好的做法,打开resultset可能会导致以下问题:
本例中异常捕获的问题是如何区分数据源异常、查询创建异常或查询执行异常?当我的数据源无法提供连接时,我可能会抛出一个特定的RuntimeException
否。您的代码无法编译。
每个
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!
}
否。您的代码无法编译。
每个
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!
}
它在JDK 7中编译得很好它在JDK中编译得很好7@sr.Varoa我这里的问题与它是否编译无关。它确实可以编译。我的问题是,遵循不为嵌套的try块声明catch块的编程实践可以吗。尽管采用这种方法,程序编译和运行良好。@sr.Varoa我这里的问题与它是否编译无关。它确实可以编译。我的问题是,遵循不为嵌套的try块声明catch块的编程实践可以吗。尽管采用这种方法,程序编译和运行良好。