Я просто хотел, чтобы подтвердить логику этого вложенного блока примерки загвоздка:Уплотненный Try Поймайте Logic
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 yes? Аналогично, если происходит откат транзакции, он будет вызывать только соответствующий блок catch, а не первые два?
Исключения не будут пузыриться до тех пор, пока они соответствуют типу исключений, определенному линией (линиями) Catch. Вы можете перебросить ошибку из блока catch, чтобы пузырить ее, если это необходимо. Умышленное нарушение вашей строки подключения должно осветить то, что происходит (наряду с точками останова). – MrGadget