У меня есть одноконтактный объект-коннектор, который помогает подключиться к базе данных 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
Фактически вы находите, наконец, такие блоки в большом количестве библиотек, иногда с помощью метода, который обертывает внутренний try-catch, например Apache Commons IOUtils 'closeQuietly (...)'. – Thomas