Идея двух видов исключений в Java (проверенная и непроверенная) заключается в том, что проверенные исключения должны использоваться для условий ошибок, которые могут обоснованно ожидаться, и непроверенные исключения должны использоваться для непредвиденных ошибок.
Например, если файл не найден, вы получаете FileNotFoundException
, и разумно ожидать, что ваша программа сможет справиться с таким условием. Непроверенные исключения должны использоваться только для проблем, которые не должны возникать, и это действительно означает, что в программе есть ошибка, если такая проблема возникает. Например, NullPointerException
означает, что ваша программа пытается разыменовать переменную, равную null
, и это, скорее всего, ошибка.
Компилятор Java заставляет программиста обрабатывать проверенные исключения. Это делает язык программирования более безопасным - это означает, что программист вынужден думать об условиях ошибки, которые должны сделать программу более устойчивой.
Компилятор не проверяет непроверенные исключения, потому что непроверенные исключения в любом случае не должны возникать, и если они это делают, программа ничего не может разумно сделать во время выполнения; программист должен устранить ошибку.
Эта функция была подвергнута критике в Java, некоторые люди даже называют проверенные исключения неудачным экспериментом , а некоторые предлагают удалить проверенные исключения из Java.