[英]Java run code only if no exception is thrown in try and catch block?
[英]How do I resume the execution from the point where the exception was thrown in try/catch block in Java?
我的用例要求我檢查 DBConnections 以確保我們擁有正確的 url。
假設我們有 10 個 Oracle DB 的列表,並且 DB4 的連接 url 格式錯誤。 我們想捕獲 db4 連接失敗但仍想檢查列表中所有剩余的數據庫。
allDBs = {DB1{用戶名, url, 通過}, DB2{用戶名, url, 通過}, ....DB10{用戶名, url, 通過}}
DBList <DbDetails> allDBs = new DBList <DbDetails>();
try{
for(DbDetails db : allDBs)
{
dbUrl = db.getDbUrl();
dbUsername = db.getUserName();
dbPassword = db.getPass();
DbDetails dbDetails = new DbDetails(dbUrl, dbUsername, dbPassword);
dataSource = dbConfig.setOrclDataSource(dbDetails);
conn = dataSource.getConnection();
String selectQuery = "select 1 from dual";
SqlFunction sf = new SqlFunction(dataSource, selectQuery);
sf.compile()
}
}
catch(SQLException se){
connFailDBList.add(dbDetail);
LOG.error(se.getMessage());
}
由於 DB4 url 格式錯誤。 通過以上邏輯,SQLException 在 DB4 處被捕獲。 但是如何恢復對列表中剩余數據庫的檢查?
只需for
cycle 和try-catch
:
DBList <DbDetails> allDBs = new DBList <DbDetails>();
for(DbDetails db : allDBs){
try{
// checking connectivity here
}catch(SQLException se){
connFailDBList.add(dbDetail);
LOG.error(se.getMessage());
}
}
只需將 try/catch 塊移動到 for 循環中。
DBList<DbDetails> allDBs = new DBList<DbDetails>();
for (DbDetails db : allDBs) {
try {
dbUrl = db.getDbUrl();
dbUsername = db.getUserName();
dbPassword = db.getPass();
DbDetails dbDetails = new DbDetails(dbUrl, dbUsername, dbPassword);
dataSource = dbConfig.setOrclDataSource(dbDetails);
conn = dataSource.getConnection();
String selectQuery = "select 1 from dual";
SqlFunction sf = new SqlFunction(dataSource, selectQuery);
sf.compile()
} catch (SQLException se) {
connFailDBList.add(dbDetail);
LOG.error(se.getMessage());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.