2

我正在构建 DB 类,在构造函数中我想建立与数据库的连接,以便该类中的其余函数可以访问静态 dbLink。这是一个好方法吗?

4

4 回答 4

12

至于具体问题,在构造函数中抛出异常肯定是合法的。没有其他明智的方法可以防止“DB 类”实例与断开的连接一起使用。

至于具体的功能需求,你还有另一个大问题。您不应该在“数据库类”的构造函数中创建数据库连接,并且肯定不会创建它static。这表明只要“DB 类”的实例存在于 Java 的内存中,您就打算保持连接打开。这反过来又是一个非常糟糕的主意。相反,应该在与try您执行 SQL 查询/查询的位置完全相同的块中创建连接。连接也应该在那个finally块中关闭try堵塞。这可以防止资源长期泄漏,否则会导致您的应用程序崩溃,因为数据库服务器因为打开时间过长而导致资源超时,或者因为打开了太多连接而耗尽资源。

也可以看看:

于 2012-04-05T20:38:33.853 回答
3

我的建议是connect()在你的类中提供一个抛出异常的方法,让你的类实例化没有异常。

于 2012-04-05T20:40:22.997 回答
2

“你好,是的,构造函数抛出异常是正常的。实际上,抛出异常是构造函数失败的唯一方法。

但是,您应该小心从作为 RuntimeException 子类的构造函数中抛出任何异常。Java 编译器不会强制调用代码处理此类异常,因此它们会带来一些额外的风险。有时使用它们是可以的,但要小心。”

从这里:http ://en.allexperts.com/q/Java-1046/normal-throw-exception-constructor.htm

于 2012-04-05T20:32:05.750 回答
1

通常,创建某种类型的连接对象实际上并不建立连接,它只是设置要建立的连接。connect()拥有一个建立连接或在无法建立连接时抛出异常的方法更有意义。

我认为让构造函数建立连接没有意义,所以它不应该抛出任何异常。

于 2012-04-05T20:37:01.133 回答