我们为什么要在编写数据库连接时使用try-catch?

时间:2018-02-04 08:27:48

标签: java try-catch sqlexception

在使用代码连接到数据库时,它要求在try catch块中包围它。

连接

mycs=DriverManager.getConnection("jdbc:mysql://localhost:3306/javatest [root on Default schema]");

4 个答案:

答案 0 :(得分:0)

B / c驱动程序正在尝试建立连接,如果失败(由于可能的原因),则抛出异常。例如,MySQL服务器没有运行,javatest不存在......

请注意try-catch并非处理异常的唯一方法。

答案 1 :(得分:0)

DriverManager.getConnection会抛出 SQLException ,这是经过检查的异常,需要处理或抛出。

此外,正确处理或传播异常始终是一个好习惯。这不仅限于数据库连接,而是在其他地方。

答案 2 :(得分:0)

如果你转到方法的声明,你会看到它被声明为:

    public static Connection getConnection(String url)
        throws SQLException {
        ...
    }

SQLException是一个已检查的异常,意味着当您调用抛出已检查Exception的方法时,您必须通过try-catch处理它,或者通过使用此异常声明调用方法来传播它。

所以必须有一个叫做unchecked异常的东西,对吧?是的,它们包括RuntimeException的所有子类。

当一个方法抛出一个已检查的异常时,它希望调用者知道某些东西有可能出错,你不能忽略它。

答案 3 :(得分:0)

基本上,任何已检查的异常都需要在方法签名中处理(选项1)或指定(选项2)(查看here捕获或指定要求)。

现在,特定于DriverManager的{​​{1}}方法,它会抛出一个已检查的异常(即getConnection),您可以在下方查找API(或{{3} })。所以你可以使用try-catch块来处理它或指定它(在方法签名中使用SQLException cluase)。

  

public static Connection getConnection(String url)                                   抛出SQLException

     

尝试建立与给定数据库URL的连接。该   DriverManager尝试从该组中选择适当的驱动程序   注册JDBC驱动程序。

     

返回:       与URL的连接

     

<强>抛出:        SQLException - 如果发生数据库访问错误或网址为空

注意:如果您选择选项(2)(即指定它),那么您的方法的调用者需要处理它(即,再次处理它或指定它)