我想确认这个嵌套的try-catch块的逻辑:
Try
Using dbConn As New SqlConnection With {.ConnectionString = strConnStr}
dbConn.Open()
'Prepare transaction
Try
' Execute transaction
Catch ex As Exception
Try
' Transaction rollback
Catch ex2 As SqlException
' ...
End Try
Finally
dbConn.Dispose()
End Try
End Using
Catch ex As Exception
' ...
End Try
如果数据库连接在执行事务之前失败(第二个Try-Catch块),则第一个catch块会捕获该异常,并且将不再继续执行该事务吗?
嵌套的Try-Catch块中的情况是,异常包含在它们自己的try-catch块中吗?即:如果事务执行失败,它会调用第二个catch块(启动回滚),但它不会调用第一个catch块是吗?同样,如果发生事务回滚,它只会调用其对应的catch块而不是前两个?
答案 0 :(得分:0)
当异常抛出时,它将被传递给最近的catch块对应try块来处理它。如果没有任何catch块来处理异常或者如果Corresponding catch块抛出异常,则会出现,如果有任何try / catch块,异常将传递给parent catch块,依此类推。