Sobes.tech
Back to questions
Senior
4

В чем разница между проверяемыми (checked) и непроверяемыми (unchecked) исключениями?

Companies where asked
IT OneIT One

Answer from AI

sobes.tech AI

В Java исключения делятся на проверяемые (checked) и непроверяемые (unchecked) по способу обработки компилятором.

  • Проверяемые исключения (checked exceptions) — это исключения, которые наследуются от класса Exception, но не от RuntimeException. Компилятор требует, чтобы такие исключения либо обрабатывались в блоке try-catch, либо объявлялись в сигнатуре метода через throws. Это заставляет программиста явно учитывать возможные ошибки, например, IOException, SQLException.

  • Непроверяемые исключения (unchecked exceptions) — это исключения, наследуемые от RuntimeException. Компилятор не требует их обязательной обработки или объявления. Обычно они сигнализируют о программных ошибках, таких как NullPointerException, IllegalArgumentException.

Пример:

public void readFile(String path) throws IOException { // checked
    // чтение файла, может выбросить IOException
}

public void setAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("Возраст не может быть отрицательным"); // unchecked
    }
}

Таким образом, checked исключения требуют явного контроля, а unchecked — сигнализируют о логических ошибках, которые обычно не обрабатываются явно.