我有一個單連接器連接器對象,可以幫助連接到mysql數據庫。在Java中處理異常的正確方法
public class Connector{
private Connector(){
}
public static Connector getInstance(){
if(unique == null) unique = new Connector();
return unique;
}
public void connect() throws SQLException{
conn = (Connection) DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
if(conn != null) System.out.println("Connected");
}
public void close() throws SQLException{
if(conn != null) conn.close();
}
}
但自然我冒着呼叫方處理異常。這是我的客戶。現在
Connector connector = Connector.getInstance();
try {
connector.connect();
} catch (SQLException e) {
System.out.println("Connected now");
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
connector.close();
System.out.println("Connection closed");
}
連接器不能編譯,因爲它要我包裹終於嘗試捕捉範圍內,因爲該方法close()
也會引發異常。這意味着我必須編寫這樣的代碼。
finally {
try {
connector.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Connection closed");
}
這不知怎的看起來不對。處理這種情況的正確方法是什麼?感謝預期。
有沒有「正確」的方式,這一切都取決於您的需求和要求 – Stultuske
@Stultuske所以這段代碼是好的還是有一個更優雅的方式來處理這個異常。 – Zeus
你實際上在很多庫中最終會找到這樣的塊,有時候會用一個方法來包裝Apache Commons IOUtils的closeQuietly(...)這樣的內部try-catch。 – Thomas