В некоторых случаях это хорошая идея, например, одна попытка / перехват для всего метода, а другая внутри цикла, когда вы хотите обработать исключение и продолжить обработку остальной части коллекции.
На самом деле единственная причина сделать это, если вы хотите пропустить бит, который допустил ошибку и продолжить, вместо того, чтобы раскручивать стек и терять контекст.Открытие нескольких файлов в редакторе - один из примеров.
При этом исключения (как следует из названия) должны быть исключительными.Программа должна обрабатывать их, но стараться избегать их как часть нормального потока выполнения.Они вычислительно дороги в большинстве языков (одним заметным исключением является Python).
Еще один полезный метод - перехват определенных типов исключений ...
Try
'Some code to read from a file
Catch ex as IOException
'Handle file access issues (possibly silently depending on usage)
Catch ex as Exception
' Handle all other exceptions.
' If you've got a handler further up, just omit this Catch and let the
' exception propagate
Throw
End Try
Мы также используем вложенные try / catch в наших процедурах обработки ошибок ...
Try
Dim Message = String.Format("...", )
Try
'Log to database
Catch ex As Exception
'Do nothing
End Try
Try
'Log to file
Catch ex As Exception
'Do nothing
End Try
Catch ex As Exception
'Give up and go home
End Try