Ответ 1
Есть определенные обстоятельства, когда они являются хорошей идеей, например, один метод try/catch для всего метода, а другой - внутри цикла, когда вы хотите обработать исключение и продолжить обработку остальной части коллекции.
На самом деле единственная причина сделать это, если вы хотите пропустить бит, который допустил ошибку и продолжить, вместо того, чтобы раскручивать стек и терять контекст. Открытие нескольких файлов в редакторе является одним из примеров.
Тем не менее, исключения должны (как следует из названия) быть исключительными. Программа должна обрабатывать их, но стараться избегать их как часть нормального потока выполнения. Они вычислительно дороги в большинстве языков (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/catches в наших процедурах обработки ошибок...
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