Проверяемые исключения 2. А смысл?

312
24 января 2017, 22:16

Вопрос навеян вот этим вопросом. Там мне все советуют преобразовать проверяемое исключение в непроверяемое.

А вопрос у меня такой: зачем разработчики Java придумали такой термин как проверяемое исключение? Какой от этого профит? Чтобы знать какой метод может выбросить исключение, а какой нет? Так любой метод может выкинуть какой-нибудь NullPointerException который все равно нужно ловить и обрабатывать? Так чем NullPointerException отличается от IOException который нужно обязательно декларировать в throws? Ни в одном, известном мне, языке, такого термина нет.

Единственное объяснение, которое я могу придумать это то, что при возникновении проверяемого исключения, объект находится в некотором предусмотренном состоянии, и при непроверяемом - объект может быть поврежден.

Answer 1

NullPointerException никогда не произойдет, если вы будете делать проверку на null. IOException - такое исключение может воникнуть, даже если вы постараетесь заранее определить, возникнет ли оно. По сути, это для программиста как "чистый код". Он делает более удобно и красиво архитектуру кода.
Т.е. если, к примеру, вы видите, что ошибку можно не проверять, делаете ее рантайм. Как-то так, я думаю.

Answer 2

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

NPE непроверяемое просто потому, что может теоретически возникнуть в любой строчке. Деление на ноль потенциально охватывает все случаи деления целых чисел, а OutOfMemoryError может вылететь во время создания любого объекта. Аналогичные причины можно найти и для остальных исключений.

READ ALSO
Сохранение контента(pdf,html,txt) в MySQL

Сохранение контента(pdf,html,txt) в MySQL

Каким образом можно хранить контент различного формата(pdf,html,txt) в БД, субд - MySQL, язык программирования - JavaФайлы изначально должны хранится...

333
Сделать ссылку для скачивания JSP

Сделать ссылку для скачивания JSP

Есть JSP страница необходимо сделать ссылку для скачивания файлаКак это можно реализовать?

318
Подскажите как изменить цвет строки в ListFragment

Подскажите как изменить цвет строки в ListFragment

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

247
java zadaja matrsi [требует правки]

java zadaja matrsi [требует правки]

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

280