Для чего в Java нужны проверяемые исключения?

Для чего в Java нужны проверяемые исключения?
Для чего в Java нужны проверяемые исключения? - coc6 @ Unsplash

Прежде всего, как и в любой другой парадигме программирования, вам нужно сделать это правильно, чтобы она работала хорошо.

Для меня преимущество проверенных исключений заключается в том, что авторы исполняющей библиотеки Java УЖЕ решили за меня, какие распространенные проблемы я мог бы разумно решить в точке вызова (в отличие от высокоуровневой системы catch-print- die block) и как можно раньше подумайте, как справиться с этими проблемами.

Мне нравятся проверенные исключения, потому что они делают мой код более надежным, заставляя меня думать об устранении ошибок как можно раньше.

Чтобы быть более точным, для меня это делает мой код более надежным, поскольку заставляет меня рассматривать странные угловые случаи очень рано в процессе, а не говорить «Ой, мой код не обрабатывает, если файл еще не существует» на основе ошибка в производстве, для обработки которой вам придется переработать свой код. Добавление обработки ошибок к существующему коду может быть нетривиальной задачей и, следовательно, дорогостоящей задачей при обслуживании, а не просто делать это с самого начала.

Может случиться так, что отсутствующий файл является фатальной вещью и должен привести к сбою программы, но тогда вы принимаете это решение с помощью

} catch (FileNotFoundException e) {
  throw new RuntimeException("Important file not present", e);
}

Это также показывает очень важный побочный эффект. Если вы оборачиваете исключение, вы можете добавить объяснение, которое идет в трассировке стека! Это настолько мощно, потому что вы можете добавить информацию о, например. имя отсутствующего файла или параметры, переданные этому методу, или другая диагностическая информация, и эта информация присутствует прямо в трассировке стека, что часто является единственной вещью, которую вы получаете при сбое программы.

Люди могут сказать: «Мы можем просто запустить это в отладчике, чтобы воспроизвести», но я обнаружил, что очень часто производственные ошибки не могут быть воспроизведены позже, и мы не можем запускать отладчики в производственной среде, за исключением очень неприятных случаев, когда на карту поставлена ​​ваша работа.

Чем больше информации в трассировке стека, тем лучше. Проверенные исключения помогают мне получить эту информацию заранее.


Обновлено: Это касается и дизайнеров библиотек. Одна библиотека, которую я использую каждый день, содержит множество проверенных исключений, которые можно было бы разработать намного лучше, чтобы их использование было менее утомительным.

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - 43 2 Checked и Unchecked Исключения в Java

Прикрепленное видео 2 - Java для начинающих. Урок 37: Исключения (часть 1). Обработка исключений

Прикрепленное видео 3 - Подготовка к Java собеседованию - 3.1 Исключения (Exceptions)


LetsCodeIt, 25 мая 2023 г., 12:28