Sobes.tech
Back to questions
Middle
13

В чём отличие Checked и Unchecked исключений в Java? Как с ними работать?

Companies where asked
Позитив Технолоджис

Answer from AI

sobes.tech AI

В Java исключения делятся на Checked (проверяемые) и Unchecked (непроверяемые):

  • Checked исключения — это исключения, которые проверяются компилятором во время компиляции. Методы, которые могут их выбросить, должны объявлять это через throws, и вызывающий код обязан либо обработать эти исключения (try-catch), либо пробросить дальше. Пример: IOException, SQLException.

  • Unchecked исключения — это наследники RuntimeException и Error. Компилятор не требует их обработки или объявления. Обычно они связаны с программными ошибками, например, NullPointerException, IllegalArgumentException.

Как работать:

  • Для Checked исключений нужно явно обрабатывать или объявлять их, что заставляет разработчика задуматься о возможных ошибках и их обработке.
  • Unchecked исключения обычно сигнализируют о логических ошибках, которые лучше исправлять, а не ловить.

Пример:

public void readFile(String path) throws IOException {
    FileReader fr = new FileReader(path); // IOException — checked
}

public void process(int[] arr) {
    int x = arr[10]; // может вызвать ArrayIndexOutOfBoundsException — unchecked
}

Таким образом, Checked исключения требуют явного контроля, а Unchecked — сигнализируют о критических ошибках, которые лучше предотвращать.