[英]nested try block without a catch or finally block
沒有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();
}
如果刪除“嘗試”,結果集將不會自動關閉。
try-with-resources語句在最終的隱藏中執行rs.close。
關閉結果集是一個好習慣,打開結果集可能會導致問題: java.sql.SQLException: - ORA-01000:超出最大打開游標數
此示例中的異常捕獲問題是如何區分數據源異常,查詢創建異常或查詢執行SQLExceptions? 當我的數據源無法提供連接時,我可能會拋出特定的RuntimeException。
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!
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.