Недопустимо даже иметь 1 попытку / улов на метод.
Исключения были полностью придуманы, чтобы мы могли писать меньше кода для обработки ошибок, а не больше, как предполагают некоторые другие ответы.
Перед исключениями вам приходилось проверять успешность каждой строки кода, проверяя возвращаемое значение, и, если что-то было не так, его нужно было возвращать обратно в стек вызовов с возвратом. Это означало, что каждый метод должен был проверить и вернуть. Исключения были придуманы так, чтобы методы не требовали повсеместной проверки, и вы могли иметь прямую серию строк кода, которые были читабельны, потому что они не были скрыты обработкой ошибок.
Итак ... совет: у вас должно быть наименьшее количество попыток / уловов, которое вы можете иметь, и это должно означать, что большинству методов не понадобится.
Но вот некоторые места, где их следует использовать:
- В случае сбоя операции (для записи в файл журнала или для отображения пользователю сообщения об ошибке), Делайте это только в том случае, если вы знаете, что программа может продолжаться и не находится в поврежденном состоянии из-за сбоя одной операции. Операции должны быть изолированы друг от друга.
- В вашем методе Main регистрируйте любые исключения, которые не были обработаны где-либо еще до того, как ваша программа прервалась из-за этого.
- В местах, где вы можете предпринять какие-либо действия, такие как повторное выполнение операции или переход к более низкому режиму работы.
- Там, где есть плохой API, который не позволяет вам проверять состояние, которое вам нужно обработать. Например, если вы хотите открыть файл, а API-интерфейс не предоставил DidFileExist (), вы можете сначала вызвать его.
Я не могу сейчас думать ни о чем другом ... это потому, что try / catch должно быть немного и далеко друг от друга!
Мой отладчик всегда отключается при возникновении любого исключения. Это редко ломается, потому что исключения являются исключительными.