Общая философия исключений на любом языке заключается в том, что они сообщают исключительные обстоятельства .Вы должны использовать их соответственно.
Если вы в конечном итоге окружаете каждый вызов функции блоком try
, что-то не так.Исключения точно разработаны, чтобы сделать обработку ошибок логичной и не требовать от программиста отслеживания всех возможных путей ошибок.Следовательно, вы должны ловить исключения именно в тех точках, где вы можете значимо реагировать на них.
Если вы не можете придумать ничего лучше, чем прервать и распространить ошибку, то нетпоймать исключение.С другой стороны, если есть какие-то ошибки, на которые вы можете разумно реагировать, ловить их и перебрасывать что-либо еще.
Типичным примером является обработка большого количества файлов.Если в логике синтаксического анализа есть какая-либо ошибка, вы ничего не можете сделать, даже если синтаксический анализ может привести к потере многих вызовов функций.Однако в основном цикле вы можете try
анализировать каждый файл, и, если есть исключение, вы поймете это, пропустите файл и перейдите к следующему.
Если вы пишете библиотечную функцию,вы можете захотеть иметь один последний блок try, охватывающий всю вашу функцию;это зависит от вас, хотя.Просто документируйте четко, какие исключения пользователь должен ожидать от вашей библиотеки.