Java范围尝试/捕获
对Java相当陌生,我正在尝试更好地理解一些事情。我知道try/catch语句变量只在该语句中有作用域。我试图学习JavaDBSQL,但遇到了一个问题Java范围尝试/捕获,java,try-catch,Java,Try Catch,对Java相当陌生,我正在尝试更好地理解一些事情。我知道try/catch语句变量只在该语句中有作用域。我试图学习JavaDBSQL,但遇到了一个问题 final String DB_URL = "jdbc:derby://localhost:1527/Customers"; Connection conn = DriverManager.getConnection(DB_URL); 这将创建与我的数据库的连接。我需要在try/catch语句中包含这一点。我想在程序结束时再次访问con
final String DB_URL = "jdbc:derby://localhost:1527/Customers";
Connection conn = DriverManager.getConnection(DB_URL);
这将创建与我的数据库的连接。我需要在try/catch语句中包含这一点。我想在程序结束时再次访问conn变量以关闭连接。我试图在我的程序顶部声明这个变量,但它不允许,因为它需要一个try/catch。解决这个问题的最佳方法是什么
正如下面所建议的,我将其创建为一个变量。我试图用退出按钮关闭连接,但代码没有执行。使用if语句,程序不会关闭,System.out.print消息也不会激发。连接启动正常,但未关闭
if (conn != null){
conn.close();
System.out.println("Connection Closed");
System.exit(0);}
解决方案是将变量声明与其实例化分开。在班级的最顶端,写下以下声明:
Connection conn = null;
然后可以将实例化放在try/catch块中
try {
conn = DriverManager.getConnection(DB_URL);
}
catch (SQLException exception) {
// Handle error.
}
最后,在清理时,添加一个空检查
if (conn != null) {
conn.close();
}
可以通过在try/catch块之外声明连接对象来实现, 并在try{}中创建它
final String DB_URL = "jdbc:derby://localhost:1527/Customers";
Connection conn = null;
try {
conn = DriverManager.getConnection(DB_URL);
} catch(Exception e) {
System.out.println("Exception "+e);
}
您应该在try块之外声明
连接
变量
Connection conn = null;
try {
conn = Connection conn = DriverManager.getConnection(url)
} catch (SQLException e) {//log exception}
在你的程序结束时,你可以这样关闭它
if (conn != null) {
try{conn.close();}
catch(Exception e) {//log exception}
}
从Java 7开始,您可以使用try with resource
,它会自动释放资源,但是变量conn只能在try块内部访问。
try (Connection conn = DriverManager.getConnection(url)) {
System.out.println("Connecting...");
System.out.println("Connected");
} catch (SQLException e) {
//log exception
}
可能重复的