Назад к вопросам
Junior
69
questionbank

Какие виды исключений существуют в языке Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Java существуют три основных вида исключений:

  1. Checked Exceptions (Проверяемые исключения):

    • Наследуются от java.lang.Exception.
    • Компилятор требует их обязательной обработки (через try-catch блок или объявление в сигнатуре метода с помощью throws).
    • Представляют собой предсказуемые, но не всегда желательные ситуации, возникающие при нормальном ходе выполнения программы (например, IOException, SQLException).
  2. Unchecked Exceptions (Непроверяемые исключения):

    • Наследуются от java.lang.RuntimeException.
    • Компилятор не требует их обязательной обработки.
    • Обычно указывают на ошибки в логике программы или некорректное использование API (например, NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException).
    • Обработка этих исключений часто необязательна, так как они сигнализируют о багах, которые следует исправить.
  3. Errors (Ошибки):

    • Наследуются от java.lang.Error.
    • Вызваются серьезными проблемами, которые обычно лежат вне контроля приложения и указывают на сбои в виртуальной машине Java или системных ресурсах (например, OutOfMemoryError, StackOverflowError).
    • Ошибки, как правило, не подлежат обработке программой и приводят к ее аварийному завершению. Их не следует ловить в try-catch блоках.

Вот табличное представление различий:

Характеристика Checked Exceptions Unchecked Exceptions Errors
Базовый класс java.lang.Exception java.lang.RuntimeException java.lang.Error
Требуется обработка Да (обязательно компилятором) Нет Нет
Причина возникновения Предсказуемые проблемы Ошибки в логике, некорректное API Серьезные проблемы JVM, системные сбои
Восстановимость Часто возможно Редко возможно Невозможно
// Пример Checked Exception - IOException
try {
    java.io.FileReader file = new java.io.FileReader("my_file.txt");
    // чтение из файла
} catch (java.io.IOException e) {
    // Обработка исключения - файл не найден или другая ошибка ввода/вывода
    e.printStackTrace();
}

// Пример Unchecked Exception - NullPointerException
String str = null;
try {
    int length = str.length(); // Вызовет NullPointerException
} catch (java.lang.NullPointerException e) {
    // Обработка исключения - строка была null
    System.err.println("Строка была null: " + e.getMessage());
}

// Пример Error - StackOverflowError
// Это приведет к StackOverflowError, поэтому не следует запускать в реальном приложении
/*
public void recursiveMethod() {
    recursiveMethod();
}
*/