gpt4 book ai didi

java - SQL Exception 对象在 catch block 内建立连接的作用

转载 作者:行者123 更新时间:2023-11-29 03:23:31 25 4
gpt4 key购买 nike

请考虑以下代码:

代码片段#1

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

// other stuff here
}

catch(SQLException ex)

{

System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());

// For Connection #1
InsertRemoteResultsStmt = connRemote.createStatement();
// Rest of the connection code

// For Connection #2 (Will be a new connection)

}

代码片段#2:

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

// other stuff here
}

catch(SQLException ex) // Original catch block

{

System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());

try{

// For Connection #1 ( Will be using an existing one)
InsertRemoteResultsStmt = connRemote.createStatement();
// Rest of the connection code

// For Connection #2 (Will be a new connection)
}

Catch(SQLException insidecatch)
{

}

break;
}

问题 #1 在我的案例中,代码片段 #2 是处理异常的更好方法吗?

下一个问题:

因此,我了解到如果我必须使用异常对象显示某些内容,我可以在 catch block 中执行以下操作:

System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());

但是,在我的例子中,我在 catch block 中使用了一个现有的打开的连接,如上所示,我想知道:

问题 #2) catch block 中的代码是否会在异常被捕获时立即开始自动执行?我很困惑,因为在我的 System.out.println 语句中,我使用 ex 对象来显示所有消息,我没有在它后面的 JDBC 连接中的任何地方使用这个对象。

问题 #3 如果我在末尾使用 break 语句并退出 catch block 是否可以?由于 break 用于循环,我相信控制会自动从原始 catch block 中出来?

问题 #1 的说明:

我基本上是在比较两种方法,同时牢记错误处理,我打算使用其中的任何一种。在代码片段 #1 中,我没有在 catch block 内添加任何额外的 try-catch block ,反之亦然代码片段#2。我基本上在 catch block 中使用两个连接。 Connection #1 将是一个 connectionswhich 将用于在一个数据库中插入一些记录,与连接 #2 相同。

由于我在 catch block 中添加了额外的 try-catch block ,我想知道是不是这种方法好继续吗?只是想知道,因为我这里有更多的错误处理代码,所以这种方法应该比代码片段#1?

最佳答案

  1. 他们都没有按照您的意愿行事。我什至不确定你想要什么。

  2. 是的。一旦 try block 内的某些东西抛出异常,执行就会直接进入 catch block 并退出 try block ex 对象是异常本身,由抛出异常的任何代码生成。

  3. 没有。没有办法返回到抛出异常之后的状态,如果那是您的想法。在 catch block 中的最后一条语句之后,执行转到 catch block 之后的下一条语句(其他 catch block 除外)。

3a。 break 用于循环和 switch block 。跳出 catch block 就像跳出 if 语句一样。

但我认为您不了解异常。如果出现问题 将抛出异常 - 它在建立连接时不起作用。如果 DriverManager.getConnection 抛出一个 SQLException,那么当它试图连接到数据库时出了点问题,所以 它没有连接到数据库。如果您仍然尝试使用数据库连接,那将是失败的秘诀。如果确实发生了,除了显示错误消息并放弃之外,您无能为力。

关于java - SQL Exception 对象在 catch block 内建立连接的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22316275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com