Проверено против непроверенного исключения - PullRequest
10 голосов
/ 09 января 2011

Я изучал это: за исключением неконтролируемого исключения, однако, компилятор не заставляет клиентских программистов ни перехватывать исключение, ни объявлять его в предложении throws.На самом деле, клиентские программисты могут даже не знать, что может быть выдано исключение.например, StringIndexOutOfBoundsException, брошенный методом charAt() строки.

что это значит?

в соответствии с этим кодом нет необходимости помещать блок try catch в код, но я видел, как компилятор заставляет код поместить его в блок try catch.

Я очень запутался, что именно?

Ответы [ 4 ]

19 голосов
/ 09 января 2011

Непроверенные исключения - это те, которые расширяют класс RuntimeException. Компилятор никогда не заставит вас перехватить такое исключение или не объявит его в методе с использованием ключевого слова throws. Все другие типы исключений (которые не расширяются RuntimeException) проверяются и поэтому должны быть объявлены как выброшенные и / или перехваченные.

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

Если вы считаете, что вызов не может быть полезен для исключения (особенно, когда оно представляет ошибку или неправильное использование вашего API), исключение следует снять. Кроме того, API со слишком большим количеством проверенных исключений может раздражать программирование (например, попробуйте использовать API отражения java =)

4 голосов
/ 09 января 2011

Какой у вас вопрос?Компиляторы не должны (и не будут) заставлять вас пытаться / отлавливать непроверенные исключения, которые будут противоречить именно им.

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

Есть ряд людей, которые считают, что проверенные исключения являются ошибкой на платформе Java, и они используют их только очень редко или совсем не используют.Вы можете прочитать больше об этой дискуссии, выполнив поиск в Google.

3 голосов
/ 29 января 2011

Это потому, что

  1. Непроверенные исключения не являются результатом ошибки программиста. Вместо этого они являются серьезными последствиями, когда от нас (программиста) вряд ли что-то получится.
  2. В случае Checked Exception, это исключение генерируется из-за ошибки программиста и часто может быть разрешено самим программистом.

Проверьте следующие ссылки:

Почему исключения RunTime не проверяются?
Проверено против непроверенного исключения?

1 голос
/ 22 мая 2017
  • Проверенные исключения полезны для обработки событий, возникающих при нормальной работе программы.Примером может быть IOException, который выдается, когда файл не может быть открыт.Эти исключения происходят, даже если с программой все в порядке.Поэтому необходимо сообщить программе, как обрабатывать исключение.
  • Непроверенные исключения полезны для выявления дефектов в коде.Например, NullPointerException генерируется, когда значение читается на null объекте.Таким образом, непроверенное исключение представляет проблему, которая требует ручного исправления программистом.Разумно, чтобы программа аварийно завершилась, чтобы избежать ошибочного поведения, поэтому блокировка try-catch не требуется (но может быть желательна для смягчения последствий, таких как отображение ошибки пользователю).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...