Nested Try-Catch: выдает исключение для внешнего цикла try catch - PullRequest
0 голосов
/ 18 октября 2019

Я определил 2 пользовательских исключения, таких как

Public Class SkipException
   Inherits System.ApplicationException
End Class

Public Class NoRecordFoundException
   Inherits System.ApplicationException
End Class

В моем коде сценарии: 1. Данные вызывают общее исключение 2. У меня нет данных 3. Исключение, которое я уже обработал

Try
'Some code here
    Try
       ''Do some code
       ''Cant find the record
       If i = 0 then
           Throw NoRecordFoundException
       End if 
    Catch ex as Exception

    End Try

    Try
        ''Cant do nothing so just skip
        If CantDoNothing then
           Throw SkipException
        End if
    Catch ex as Exception

    End Try
Catch SkipException
  ''Some code here
Catch NoRecordFoundException
  '' some code here
Catch ex as Exception
   ''Handle regular exception
End Try

Так будет ли это работать? Пойдет ли исключение на внешнюю обработку, а не на внутреннюю защелку?

Сейчас я перебрасываю исключение, чтобы оно заработало.

1 Ответ

1 голос
/ 18 октября 2019

Просто обработайте конкретное исключение и перебросьте. Следующий Catch ex as Exception будет игнорировать исключения, обнаруженные перед ним.

Try
    Try
        Throw New NoRecordFoundException()
    Catch ex As NoRecordFoundException
        Throw
    Catch ex As Exception
        ' nothing happens here
    End Try
Catch ex As NoRecordFoundException
    ' handled here
Catch ex As Exception
    ' nothing happens here
End Try
...