← Назад к вопросам

Какие знаешь виды исключения в Java?

2.0 Middle🔥 131 комментариев
#Автоматизация тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Виды исключений в Java

В Java исключения (exceptions) являются механизмом обработки ошибок и нештатных ситуаций. Они организованы в иерархию классов, где все исключения являются подклассами класса Throwable. Основные виды исключений делятся на две большие категории: проверяемые (checked) и непроверяемые (unchecked) исключения.

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

Это исключения, которые компилятор Java требует обрабатывать либо объявлять в методе. Они представляют ошибки, которые программа может предвидеть и восстановиться после них. Все проверяемые исключения являются подклассами Exception, но не RuntimeException.

Примеры:

  • IOException — проблемы с вводом/выводом.
  • SQLException — ошибки при работе с базами данных.
  • ClassNotFoundException — класс не найден.
try {
    FileReader file = new FileReader("test.txt");
} catch (IOException e) {
    System.out.println("Ошибка чтения файла: " + e.getMessage());
}

Непроверяемые исключения (Unchecked Exceptions)

Это исключения, которые компилятор не требует обрабатывать. Они обычно указывают на ошибки в логике программы. Все непроверяемые исключения являются подклассами RuntimeException.

Примеры:

  • NullPointerException — попытка использовать null ссылку.
  • ArrayIndexOutOfBoundsException — индекс вне границ массива.
  • IllegalArgumentException — неверный аргумент метода.
int[] arr = {1, 2, 3};
try {
    System.out.println(arr[5]); // Вызовет ArrayIndexOutOfBoundsException
} catch (RuntimeException e) {
    System.out.println("Ошибка работы с массивом: " + e);
}

Ошибки (Errors)

Это серьезные проблемы, которые обычно не следует обрабатывать в программе. Они являются подклассами Error и указывают на критические сбои среды выполнения Java.

Примеры:

  • OutOfMemoryError — недостаточно памяти.
  • StackOverflowError — переполнение стека.
  • VirtualMachineError — ошибка виртуальной машины.
// Ошибки обычно не обрабатываются в коде, так как они указывают на фатальные проблемы.
public void recursiveMethod() {
    recursiveMethod(); // Вызовет StackOverflowError
}

Ключевые принципы работы с исключениями

  • try-catch блок: Основной механизм обработки исключений.
  • finally блок: Используется для выполнения обязательного кода (например, закрытие ресурсов) независимо от возникновения исключения.
  • throw: Оператор для явного генерации исключения.
  • throws: Ключевое слово в объявлении метода для указания, какие исключения он может выбрасывать.
public void readFile(String path) throws IOException {
    if (path == null) {
        throw new IllegalArgumentException("Путь не может быть null");
    }
    try {
        BufferedReader reader = new BufferedReader(new FileReader(path));
        String line = reader.readLine();
    } catch (IOException e) {
        System.out.println("Ошибка при чтении файла: " + e.getMessage());
    } finally {
        // Здесь можно закрыть ресурсы, если они были открыты
    }
}

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

Какие знаешь виды исключения в Java? | PrepBro