首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获异常后恢复代码

捕获异常后恢复代码
EN

Stack Overflow用户
提问于 2013-09-16 10:23:32
回答 7查看 1.2K关注 0票数 1

如果我的代码捕捉到异常,我将尝试返回false,但当代码捕获异常时,它似乎会停止。

这是我的密码:

第一方法

代码语言:javascript
复制
while ((reachable == false) && (cnt <= 2)) {
            serverName = FPRODDB[cnt][0];
            sid = FPRODDB[cnt][1];
            url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
            conn = DriverManager.getConnection(url, username, password);
            reachable = TestDB(conn);
            JOptionPane.showMessageDialog(null,
            "Testing Connection: " + String.valueOf(cnt) ); 
            cnt ++;
        }

第二种方法: TestDb方法,即放入可达变量的方法。

代码语言:javascript
复制
public boolean TestDB(Connection conn) throws Exception{

try {
    if (conn ==null || conn.isClosed()) {
        return false;
    }else {
        return true;
    }
} catch (Exception e){
       return false;
}

}

编辑:这是我的错误

代码语言:javascript
复制
java.sql.SQLException: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:508)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:203)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at digicare.tracking.serial.BulkUpload.DatabaseConnection.OracleConnection.GetDB(OracleConnection.java:45)
    at digicare.tracking.serial.BulkUpload.DatabaseConnection.OracleConnection.main(OracleConnection.java:13)
    at digicare.tracking.serial.BulkUpload.UploadProgress$1read2.run(UploadProgress.java:108)
    at java.lang.Thread.run(Unknown Source)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:328)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:421)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:630)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:206)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
    ... 10 more
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:127)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:126)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:306)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-09-16 11:46:19

我通过在

代码语言:javascript
复制
conn = DriverManager.getConnection(url, username, password);

关于第一种方法。看起来是这样的:

代码语言:javascript
复制
try {
  conn = DriverManager.getConnection(url, username, password);
  reachable = TestDB(conn);
} catch (Exception e) {
   reachable = false;
}

这是因为错误不是与第二种方法。错误是连接的声明。

票数 1
EN

Stack Overflow用户

发布于 2013-09-16 10:42:05

会不会是DriverManager.getConnection抛出了异常。因为现在编写代码时,您只捕获由conn.isClosed()引发的异常。

票数 1
EN

Stack Overflow用户

发布于 2013-09-16 10:42:28

因为在尝试捕获块之前,出现了一个异常,并且try catch块完全不能捕获Expcetion,可能是您想要捕获代码内部wrong循环,因为如果您给出错误的url、端口、用户名或密码,则方法、总是抛出一个异常。

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

https://stackoverflow.com/questions/18825681

复制
相关文章

相似问题

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