我开始学习java (在使用PHP多年之后),我很难理解这种java行为。
我使用jdk-8u121-macosx-x64与mysql-连接器-java-5.1.40-bin.jar注册在Intellij 2016.3 CE中我的项目的库属性中。
如果我试图连接到下面的图片,就会得到一个生成错误:

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

是否真的有必要将每个查询放入try catch块中?这是java想要的方法,还是我做错了什么?
谢谢
发布于 2017-02-05 08:18:01
通常,我们使用try{}catch(){},如果我们不确定我们的代码是否会返回错误,例如这里的代码:
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查询中有问题,所以我们会捕获捕获中的错误。
}(ClassNotFoundException | SQLException e) {
//catch error
}如果您不想使用“尝试捕捉”,可以这样抛出它:
public Connection getConnection() throws ClassNotFoundException, SQLException {
//------------------------------------------------^------------^--
Class.forName(driver);
java.sql.Connection con = DriverManager.getConnection(DB_URL, DB_username, DB_password);
return con;
}希望这能给你个主意。
您可以在这里了解更多有关这方面的信息:
发布于 2017-02-05 08:24:55
在红色部分上有一个气球,表示未处理异常用于解决这个问题,您可以按Alt+Enter并将抛出表达式到主方法签名中,或者使用try/catch部分抛出该表达式。
您所称的方法(DriverManager.getConnection(...))有一个抛出的签名,因此您必须能够通过您的方法抛出它:
public static Connection getConnection(String url,
Properties info)
throws SQLException您可以在java-docs上找到类似于这个https://docs.oracle.com/javase/7/docs/api/java/sql/DriverManager.html的代码描述。
https://stackoverflow.com/questions/42049775
复制相似问题