public void xxx() throws SQLException
{
Statement stmt = connection.createStatement();
try {
stmt.executeUpdate("update "+ SYS_TABLE +" set current_day=current_day+ 1 ");
} finally {
stmt.close();
}
}
有一个try
和一个finally
语句,但中间没有catch
。我读错了吗?
答案 0 :(得分:0)
此处不是catching
,而是throws
。什么时候SQLException
出生的人throws
会直接到达上层。
阅读more。
答案 1 :(得分:0)
声明方法xxx
抛出SQLException
。它没有被发布的代码捕获。因为SQLException
是一个经过检查的异常,所以它必须在调用者中被捕获(或者调用者不会编译)。
答案 2 :(得分:0)
您没有抓住异常。但抛出SQLException 将异常抛出到方法调用的位置。
如果您在某处调用xxx()方法,那么它将捕获异常。见下文。
public void yyy()
{
try {
xxx();
}
catch(SQLException e) {
System.out.println(e);
}
}
希望您能从上面的代码中理解。
答案 3 :(得分:0)
您的代码中未捕获sql异常,try
语句仅用于通过Statement
子句关闭已打开的finally
实例。当executeUpdate
行发生异常时,将通过finally子句调用stmt.close()
,然后将异常传播给xxx()
方法的调用者。这意味着xxx()
方法的调用者必须决定是在try .. except ..
块中处理异常,还是将其传播给调用者,依此类推。