首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java连接只在尝试捕获内工作。

Java连接只在尝试捕获内工作。
EN

Stack Overflow用户
提问于 2017-02-05 08:00:34
回答 2查看 5.1K关注 0票数 3

我开始学习java (在使用PHP多年之后),我很难理解这种java行为。

我使用jdk-8u121-macosx-x64与mysql-连接器-java-5.1.40-bin.jar注册在Intellij 2016.3 CE中我的项目的库属性中。

如果我试图连接到下面的图片,就会得到一个生成错误:

但是,如果我将相同的代码放入一个try catch块中,它就可以正常工作,并且我可以在没有问题的情况下查询数据库:

是否真的有必要将每个查询放入try catch块中?这是java想要的方法,还是我做错了什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-05 08:18:01

通常,我们使用try{}catch(){},如果我们不确定我们的代码是否会返回错误,例如这里的代码:

代码语言:javascript
复制
try {
    Class.forName("com.mysql.jdbc.Driver");
    java.sql.Connection con = DriverManager.getConnection(DB_URL, DB_username, DB_password);
    return con;

} catch (ClassNotFoundException | SQLException e) {
    System.out.println("Exception " + e);
    return null;
}

考虑到您的JDBC connector或SQL查询中有问题,所以我们会捕获捕获中的错误。

代码语言:javascript
复制
}(ClassNotFoundException | SQLException e) {
    //catch error
}

如果您不想使用“尝试捕捉”,可以这样抛出它:

代码语言:javascript
复制
public Connection getConnection() throws ClassNotFoundException, SQLException {
    //------------------------------------------------^------------^--
    Class.forName(driver);
    java.sql.Connection con = DriverManager.getConnection(DB_URL, DB_username, DB_password);
    return con;

}

希望这能给你个主意。

您可以在这里了解更多有关这方面的信息:

捕获和处理异常

我应该如何使用JDBC的尝试资源呢?

票数 4
EN

Stack Overflow用户

发布于 2017-02-05 08:24:55

在红色部分上有一个气球,表示未处理异常用于解决这个问题,您可以按Alt+Enter并将抛出表达式到主方法签名中,或者使用try/catch部分抛出该表达式。

您所称的方法(DriverManager.getConnection(...))有一个抛出的签名,因此您必须能够通过您的方法抛出它:

代码语言:javascript
复制
public static Connection getConnection(String url,
                   Properties info)
                            throws SQLException

您可以在java-docs上找到类似于这个https://docs.oracle.com/javase/7/docs/api/java/sql/DriverManager.html的代码描述。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42049775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档