嵌套Try Catch Logic

时间:2016-04-16 12:35:50

标签: vb.net try-catch

我想确认这个嵌套的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
  1. 如果数据库连接在执行事务之前失败(第二个Try-Catch块),则第一个catch块会捕获该异常,并且将不再继续执行该事务吗?

  2. 嵌套的Try-Catch块中的情况是,异常包含在它们自己的try-catch块中吗?即:如果事务执行失败,它会调用第二个catch块(启动回滚),但它不会调用第一个catch块是吗?同样,如果发生事务回滚,它只会调用其对应的catch块而不是前两个?

1 个答案:

答案 0 :(得分:0)

当异常抛出时,它将被传递给最近的catch块对应try块来处理它。如果没有任何catch块来处理异常或者如果Corresponding catch块抛出异常,则会出现,如果有任何try / catch块,异常将传递给parent catch块,依此类推。