9

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

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

в соответствии с этим кодом нет необходимости ставить блок try catch в код, , но я видел, что компилятор вынуждает код в try catch block.

Я очень смущен, что они точно?

ответ

4

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

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

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

16

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

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

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

+10

Исключения из «Ошибка» также не отмечены. – stolsvik

3

Это потому,

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

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

Why RunTime Exceptions are unchecked ?
Checked vs Unchecked Exception ?

+5

Это наоборот. Когда Excetchion является ошибкой программистов, его следует отключить. Недостаточно «уловить» ошибку, а не исправлять ее. Если это НЕ программисты, но вызванные внешним параметром (например, сетевая ошибка), он должен быть проверен. – Tomas

+2

** Вводящий в заблуждение! ** Может ли кто-то с достаточной репутацией отредактировать, исправьте это? – ADTC

+0

Я отправил исправление, и он ждет экспертной оценки. – PaulrBear

0
  • Unchecked исключения генерируются из-за ошибки программирования.Они не всегда пойманы программой, потому что они обычно требуют изменения программиста для исправления.
  • Проверено Исключения не являются результатом ошибки программирования. Вместо этого они возникают при нормальной работе программы. Примером может быть исключение IOException, которое вызывается, когда файл не может быть открыт. Поскольку эти исключения происходят, даже если в программе нет ничего плохого, необходимо сообщить программе, как обрабатывать исключение.
+0

Одним из очевидных примеров полезности проверенных исключений является использование вызовов API, которые зависят от ресурсов, которые могут не всегда присутствовать - в основном, java.io, среди прочих. Поскольку такие ситуации отключения могут и должны быть ожидаемыми (как правило, пойманы с интеллектуальным ответом на сообщения об ошибках, по крайней мере), обеспечение минимальной нагрузки на управление исключениями на программиста является хорошей практикой. – theRiley

 Смежные вопросы

  • Нет связанных вопросов^_^