Это действительно странная проблема. У нас есть Try Catch с несколькими блоками Catch. Первый блок Catch не имеет кода, просто комментарий.
Try
'Some Code
Catch ex As ThreadAbortException
'Do Nothing
Catch ex As Exception
HandleException(ex)
End Try
Если генерируется исключение, отличное от исключения ThreadAbortException, оно ловутся вторым Catch, как и ожидалось. Однако при переходе по коду в VS2010 ex-объект в этом случае ничего. До сих пор мы нашли два способа "исправить" эту проблему.
Исправить 1: Переименуйте первую переменную исключения.
Try
'Some Code
Catch tex As ThreadAbortException
'Do Nothing
Catch ex As Exception
HandleException(ex)
End Try
Исправить 2: Добавить строку кода в первый блок Catch.
Try
'Some Code
Catch ex As ThreadAbortException
Dim i As Integer = 1
Catch ex As Exception
HandleException(ex)
End Try
Код в HandleException, похоже, все еще функционирует должным образом, если он запускается, в любом из перечисленных случаев. Это ошибка в Visual Studio или отладчике? Или мы что-то упустили, и первый блок кода выше недействителен?
Все это делается в .NET 4.0.