我正在构建DB类,在构造函数中我想与数据库建立连接,以便该类中的其余函数可以访问静态dbLink。这是一个好方法吗?
答案 0 :(得分:12)
关于具体问题,在构造函数中抛出异常肯定是合法的。没有其他合理的方法可以防止“DB类”实例与断开的连接一起使用。
至于具体的功能要求,你还有另一个主要问题。您不应该在“DB类”的构造函数中创建数据库连接,并且肯定不会使其成为static
。这表明只要“DB类”的实例存在于Java的内存中,您就打算保持连接处于打开状态。这反过来又是一个非常糟糕的主意。应该在与执行SQL查询/查询的块相同的try
块中创建连接。还应该在finally
块的try
块中关闭连接。这样可以防止资源长期泄漏,否则会导致应用程序崩溃,因为数据库服务器因为资源已经打开太长时间而超时,或资源耗尽,因为已经打开了太多连接。
答案 1 :(得分:3)
我的建议是在你的类中提供一个connect()
方法,该方法将抛出异常并让你的类实例化而没有异常。
答案 2 :(得分:2)
“你好,是的,从构造函数中抛出异常是正常的。事实上,抛出异常是 构造函数失败的唯一方法。
但是,从作为RuntimeException子类的构造函数中抛出任何异常应该谨慎。 Java编译器不强制调用代码处理此类异常,因此它们会带来一些额外的风险。有时可以使用它们,但要小心。“
从这里开始:http://en.allexperts.com/q/Java-1046/normal-throw-exception-constructor.htm
答案 3 :(得分:1)
通常,创建某种连接对象实际上并不建立连接,它只是设置要建立的连接。如果不能建立连接的connect()
方法或抛出异常更有意义。
我不认为让构造函数建立连接是有意义的,所以它不应该抛出任何异常。