Java 在catch块中找不到连接对象?

Java 在catch块中找不到连接对象?,java,Java,我已经建立了连接,如下面的代码片段所示。我试图在catch块中再次使用相同的连接,如图所示: Statement InsertRemoteResultsStmt = null; try { Connection connRemote = DriverManager.getConnection("//my urls here"); // other stuff here } catch(SQLException ex) { InsertRemoteResultsStm

我已经建立了连接,如下面的代码片段所示。我试图在
catch
块中再次使用相同的连接,如图所示:

Statement InsertRemoteResultsStmt = null;
try {
     Connection connRemote = DriverManager.getConnection("//my urls here");

     // other stuff here
}
catch(SQLException ex)
{
    InsertRemoteResultsStmt = connRemote.createStatement(); // error comes here

}

我在Netbeans
中发现一个错误“找不到远程符号”
。我做错了什么?

你可以这样做:

Connection connRemote = null;
Statement InsertRemoteResultsStmt = null;
try {
    connRemote = DriverManager.getConnection("//my urls here");
    // other stuff here
}
catch(SQLException ex) {
    InsertRemoteResultsStmt = connRemote.createStatement(); // error comes here
}

但是,您不能确定您的连接对象在catch子句中是否有效。考虑重新组织你的代码,例如在你的TIE子句中嵌套一个额外的TIG/catch语句。< /P>你需要在<代码>之前移动声明<代码>连接CalnRebug <代码>。{块开始。现在变量
connRemote
是try块的本地变量,在catch-block中不可见。嗯,我只是想知道这是否需要留在try中,以便在建立连接时出错时可以捕获异常?赋值
connRemote=DriverManager.getConneAction(“//my URL here”);
仍将存在。我只是在谈论声明,它应该是
Connection connRemote=null;
。刚刚注意到
connRemote.createStatement()
在catch块中的一部分。这是一个逻辑问题。如果您到达那里,很可能意味着
connRemote
null
。可能重复感谢您的回答。您的意思是一个try-catch块不足以确定与连接对象相关的问题?问题是在catch子句中您没有知道是哪条语句导致抛出捕获的异常的方法,因此您无法对哪些有效,哪些无效做出假设。不幸的是,JDBC只引发了
SQLException
,而这并不能提供关于出错原因的可用信息。嗯,我想这是错误处理的一个限制。在某种程度上,是的。不过,处理数据库还是需要使用需要一系列嵌套上下文:无连接、获取连接、准备语句、发出语句等等。一定程度的try/catch嵌套是正常的。但是,如果JDBC处理不同的错误和不同的异常,我们可以通过向外部try添加catch子句来保存几个try块。@Nicolamasatti旧JDBC的异常较少,不幸的是,有些驱动程序实际上并没有使用所有可用的子类。