我在NetBeans 5.5.1中出現了一個奇怪的問題。我爲我的一個類創建了一個測試類。我測試的方法從一個名爲getConnection方法,這是因爲遵循它自己的連接:使用class.ForName註冊HSQLDB驅動程序
//This method was mainly done for an HSQLDB connection
public static Connection getConnection(String connectionString,String databaseDriver, String user, String pass) throws Exception
{
Connection conn = null;
try
{
System.out.println("Registering database driver "+databaseDriver);
Class.forName(databaseDriver);
System.out.println("Successfully registered database driver "+databaseDriver);
Properties props = new Properties();
props.setProperty("user",user);
props.setProperty("password",pass);
conn = DriverManager.getConnection(connectionString, props);
}
catch (ClassNotFoundException ex)
{
System.out.println("Reached catch block getConnection()");
throw new Exception ("Unable to create connection to database", ex);
}
catch (Exception ex)
{
System.out.println("Reached catch block getConnection()");
throw new Exception ("Unable to create connection to database", ex);
}
return new DatabaseConnection(conn).getConnection();
}
我正在使用的數據庫驅動程序HSQLDB。 運行我的測試方法後,打印到我的輸出唯一的日誌語句是 註冊數據庫驅動程序org.hsqldb.jdbcDriver
我預期的結果是: 註冊數據庫驅動程序org.hsqldb.jdbcDriver 成功org.hsqldb.jdbcDriver
當我故意使用錯誤的數據庫驅動程序,我可以清楚地看到一個異常被拋出註冊數據庫驅動程序,這意味着我使用上述驅動程序的工作,並且它可以被發現在我的班級路徑。
那麼,似乎是什麼問題?
該方法是否成功返回,或者'Class.forName'可能拋出'Error'(而不是'Exception')? – 2013-02-20 11:15:10
不,方法就在那裏結束。我不認爲有任何異常會被拋出,因爲我的catch塊沒有被觸及。 – 2013-02-20 11:28:58
這就是爲什麼我建議它可能是'Error'(它是'Throwable'的子類,但不是'Exception')。如果你把'catch(Exception ex)'改爲'catch(Throwable ex)',那麼你就可以看到這是否確實如此。 – 2013-02-20 11:38:03