Вопрос навеян вот этим вопросом. Там мне все советуют преобразовать проверяемое исключение в непроверяемое.
А вопрос у меня такой: зачем разработчики Java придумали такой термин как проверяемое исключение
? Какой от этого профит? Чтобы знать какой метод может выбросить исключение, а какой нет? Так любой метод может выкинуть какой-нибудь NullPointerException
который все равно нужно ловить и обрабатывать? Так чем NullPointerException
отличается от IOException
который нужно обязательно декларировать в throws
? Ни в одном, известном мне, языке, такого термина нет.
Единственное объяснение, которое я могу придумать это то, что при возникновении проверяемого исключения, объект находится в некотором предусмотренном состоянии, и при непроверяемом - объект может быть поврежден.
NullPointerException
никогда не произойдет, если вы будете делать проверку на null. IOException
- такое исключение может воникнуть, даже если вы постараетесь заранее определить, возникнет ли оно. По сути, это для программиста как "чистый код". Он делает более удобно и красиво архитектуру кода.
Т.е. если, к примеру, вы видите, что ошибку можно не проверять, делаете ее рантайм. Как-то так, я думаю.
Вопрос о проверяемых и непроверяемых исключениях довольно спорный и часто возникающий, особенно когда появляется куча новых API, которым они мешают нормально развернуться (те же стримы и лямбды, например). Поэтому рассуждать о правильности их ввода спустя больше чем 20 лет после появления языка уже не совсем правильно.
NPE непроверяемое просто потому, что может теоретически возникнуть в любой строчке. Деление на ноль потенциально охватывает все случаи деления целых чисел, а OutOfMemoryError
может вылететь во время создания любого объекта. Аналогичные причины можно найти и для остальных исключений.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Каким образом можно хранить контент различного формата(pdf,html,txt) в БД, субд - MySQL, язык программирования - JavaФайлы изначально должны хранится...
Есть JSP страница необходимо сделать ссылку для скачивания файлаКак это можно реализовать?
ЗдравствуйтеПишу приложение для работы, которое представляет из себя список точек с возможностью сортировать по дням недели ,и по " мои не мои"
Преобразовать строки матрицы таким образом, чтобы элементы, равные нулю, располагались после всех остальных