Почему не рекомендуется обрабатывать непроверенные исключения с помощью блоков try...catch? Почему только через некоторые условные проверки?

Почему не рекомендуется обрабатывать непроверенные исключения с помощью блоков try...catch? Почему мы должны избегать их только через некоторые условные проверки?

1 ответ

Основное ограничение модели исключений в Java заключается в том, что если метод генерирует исключение, его вызывающая сторона, как правило, не может знать обстоятельства, окружающие его. Если код, который собирается вычислить x % y проверяет ли y ноль, он может знать точные обстоятельства, при которых DivideByZeroException произошло бы, и справиться с ситуацией надлежащим образом. Если вместо этого условие обрабатывается путем перехвата исключения, программист может ожидать, что исключение возникло в результате попытки вычисления x % y когда y равен нулю, но также может перехватывать исключения деления на ноль, возникающие по непредвиденным причинам (например, вызов метода, который должен разбивать набор, но имеет ошибку, из-за которой он пытается разделить набор на ноль). При перехвате исключения невозможно указать, что нужно, чтобы исключение было перехвачено, только если оно было сгенерировано по ожидаемым причинам. На практике как проверенные, так и непроверенные исключения имеют одну и ту же проблему, но более часто встречающиеся исключения вызываются в непредвиденных обстоятельствах.

Другие вопросы по тегам