重新抛出遇到的异常后,使用块中的sql连接状态会怎样?

Posted

技术标签:

【中文标题】重新抛出遇到的异常后,使用块中的sql连接状态会怎样?【英文标题】:What happens to the state of a sql connection in using block after the exception encountered is re-thrown? 【发布时间】:2012-07-30 10:25:33 【问题描述】:
Try
    xConn.ConnectionString = xConnBuilder.ConnectionString
    xConn.Open()
    Throw New Exception("Something")
Catch ex As Exception
    Throw
Finally
    If xConn.State = ConnectionState.Open Then
        xConn.Close()
    End If
End Try

在抛出异常并重新抛出维护堆栈跟踪后,连接对象会发生什么情况,是否关闭,因为在发生异常时未到达 finally 块。

【问题讨论】:

【参考方案1】:

Finally 块包含无论天气是否存在错误/异常都必须执行的代码。

【讨论】:

【参考方案2】:

在您的示例代码中,连接将被关闭。 无论是否发生异常,都会始终执行 finally 代码块。

【讨论】:

以上是关于重新抛出遇到的异常后,使用块中的sql连接状态会怎样?的主要内容,如果未能解决你的问题,请参考以下文章

获取 PL/SQL 中重新抛出异常的完整堆栈跟踪(从点异常开始)

如何在 SQL Server 中重新引发相同的异常

Ruby - 即使抛出了 Stripe 异常,else 块中的代码也会执行

Julia 在 HTTP WebSocket 块中挂起异常

从 SQL Server 函数向存储过程抛出异常

在 try 块中抛出异常后,catch 块不会立即执行