java - Java中处理异常的正确方法

标签 java jdbc

我有一个单例连接器对象,可以帮助连接到 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/

相关文章:

java - 如何在oracle sql查询中不写模式名称?

java.sql.SQLRecoverableException : No more data to read from socket when using a connection pool?

java - JPA,实体管理器,选择多列并获取结果列表自定义对象

java - 在同一行上向后打印

java - Guava 缓存作为 Spring ap 中基于时间的清理存储

java - 使用 JDBC 连接到 SQL Server 2012 时出现问题

java - 如何将大块 JDBC 代码分成不同的类?

spring - 如何使用 Spring 为 HikariCP 设置数据源?

java - 带递归的幂函数 - java

java - System.out 中的参数