Я новичок в Java и читал документацию по исключениям. и, в частности, « Непроверенные исключения» - страница «Противоречие» .
Суть говорит:
Если от клиента можно ожидать восстановления после исключения, сделайте его проверенным исключением. Если клиент не может ничего сделать для восстановления из исключения, сделайте его непроверенным исключением.
Я не понимаю статью. О чем «спор»? Можете ли вы объяснить это простыми словами?
java
api-design
exceptions
ABcDexter
источник
источник
Ответы:
Сначала я приведу вам пример (но в самом конце - ответ, почему спор).
Предположим, что вы редактируете документ в редакторе документов на основе Java, и после того, как вы это сделаете, вы выбираете Файл-> Сохранить как ... и решили сохранить документ в том, на который у вас нет разрешения на запись. Редактор не вылетит на вас с уродливой трассировкой стека, он просто скажет вам, что не может сохранить файл и позволит вам продолжить редактирование и / или сохранение в другом месте.
В таком случае это, вероятно, проверенное исключение, которое ожидали, ловили и действовали, чтобы любезно восстановиться после него.
С другой стороны, нужно добавить в них деление на ноль или исключение нулевого указателя, вызванное ошибкой программирования, которая поднимает свою уродливую голову только в определенных условиях. Это может произойти где угодно в коде, ОЗУ может быть повреждено и т. Д. Ни один документ API не скажет вам, что «этот метод выкинул бы деление на ноль, если ОЗУ повреждено» .
Проверенные исключения должны быть частью дизайна, и пользователи этого API должны подготовиться к их обработке. Непроверенные исключения могут происходить почти везде и находятся вне нашего контроля.
Противоречие возникает из-за того, что программисты используют непроверенные исключения (начиная с RuntimeException), когда они должны использовать проверенные исключения:
источник
На этой странице нет противоречий. Это Oracle говорит людям использовать проверенные исключения.
Фальшивая «дискуссия», которую они здесь придумали, происходит между разработчиками языка и пользователями языка. Дизайнеры позволили людям бросать и ловить вещи, которые (по их мнению) не следует бросать или ловить. Поэтому они создали веб-страницу с жалобами на ленивых разработчиков.
источник