Это лишь небольшое изменение из ответа Джеффа:
Я искал что-то похожее на то, что описывает Крис, и, в частности, я хотел обработать исходное исключение после того, как оно снова было сгенерировано несколькими общими исключениями, и иметь только один обработчик, который я мог бы вызвать для всех точек входа. А так как повторное выбрасывание исключения обернет его собственным типом исключения, нам нужно добавить цикл, чтобы пройти через внутренние исключения и проверить первое выброшенное исключение.
Итак, вот код, с которым я закончил:
Public Sub HandelException(myEx As Exception)
Try
Dim InnerEx As Exception = myEx
Do Until InnerEx.InnerException Is Nothing
InnerEx = InnerEx.InnerException
Loop
If InnerEx.GetType = GetType(Exception1) Then
'Handle exception type 1
ElseIf InnerEx.GetType = GetType(Exception2) Then
'Handle exception type 2
ElseIf InnerEx.GetType = GetType(Exception3) Then
'Handle exception type 3
ElseIf InnerEx.GetType = GetType(Exception4) Then
'Handle exception type 4
ElseIf InnerEx.GetType = GetType(Exception) Then
'Handle generic system exception
End If
Catch ex As Exception
'Handel unlikely exception in exception handler LOL.
End Try
End Sub
Преимущество этого в том, что вы можете иметь широкий диапазон типов исключений, которые вы обрабатываете в программе, с большим количеством кода обработки, но вы можете обрабатывать их все в одном месте.
Я знаю, что этот ответ немного запоздал на этот вопрос, но я подумал, что поделюсь, если, возможно, чтобы помочь кому-то, ищущему то же, что я искал.