Оборачивания checked исключения в unchecked
Можете объяснить, зачем оборачивают checked исключения в unchecked в Java? Что это дает? Если не ошибаюсь не рекомендуется обрабатывать unchecked исключения.
Ответы (1 шт):
Если ваш код вызывает исключения checked, то это значит, что вам надо их обрабатывать с помощью try-catch или вызывать глобальный обработчик исключений, который отлавливает эти исключения.
То есть если исключение не обрабатывается, то необходимо помечать метод как throws это исключение.
В некоторых случаях это невозможно, например, если метод перекрывает внешний интерфейс, в котором обработка исключений обязательна то нельзя изменить сигнатуру метода добавив throws и метод должен перекрывать метод интерфейса.
Если обернуть исключение как unchecked, то его можно будет отловить позже, но так делать нерекомендуется, потому что это позволяет не обрабатывать исключения, ну и программа перестает работать.
Вот здесь, в этом ответе также идёт речь, как делать обратное, т.е. отлавливать unchecked исключения и оборачивать их в checked.
Чтобы понимать лучше чем отличаются unchecked исключения от checked, можно читать Java Tutorial.
Вот что по этому поводу пишет Oracle:
«Если можно разумно ожидать, что клиент восстановится после исключения, сделайте его
checkedисключением. Если клиент не может ничего сделать для восстановления после исключения, сделайте егоuncheckedисключением».
Поэтому оборачивать исключения одного типа в другой тип не рекомендуется, так как мы не можем изменить возможности клиента.