我有一个单例连接器对象,可以帮助连接到 mysql 数据库。
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");
}
现在连接器无法编译,因为它希望我将 finally 包装在 try catch 中,因为方法 close()
也会抛出异常。这意味着我必须编写如下代码。
finally {
try {
connector.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Connection closed");
}
这看起来有点不对。处理这种情况的正确方法是什么。感谢期待。
最佳答案
使用 decorator pattern处理this .您可以更改 Connector
类来实现 AutoCloseable
(它只有一个方法:public void close()
)并确保没有抛出异常。然后你可以使用 try-with-resources使用 Connector
时。
关于java - Java中处理异常的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501040/