Имея "горячую дискуссию" с коллегой о своей практике обертывания большей части своих функций в попытке/уловке, но уловка имеет JUST "бросок" в нем, например.
Private sub foo()
try
'Do something'
catch
throw 'And nothing else!'
End Try
End Sub
Моя мысль заключалась в том, чтобы даже не беспокоиться (предполагая, что вам не нужно ничего делать в этот момент) - исключение превратилось бы в следующий обработчик исключений в родительском члене.
Единственный аргумент, который звучал правдоподобно, заключался в том, что иногда исключения не были пойманы, а ваш код остановлен (в режиме отладки) с текущей строкой, выделенной зеленым цветом... и что это может быть связано с несколькими потоками? Лучшая практика устанавливает "обработчик исключения для каждого потока", но в основном мы работаем с однопоточными.
Хорошо, что может быть полезно в режиме отладки не внезапно выскочить к родительскому члену (да, Joel!) - вы перейдете в инструкцию "throw" и сможете исследовать своих локальных жителей. Но тогда ваш код будет "замусорен с помощью try/catch/throws" (чтобы процитировать здесь еще один поток)?
И какие бы накладные расходы были связаны с добавлением try/catch/throws во всех случаях, если не возникает исключение (например, если вы избегаете попыток/улов в жестких циклах)?