Ответ
Иерархия исключений Java делится на три основные категории, различающиеся по типу проверки и серьезности:
| Категория | Классы-родители | Проверка | Когда использовать | Примеры |
|---|---|---|---|---|
| Checked (Проверяемые) | Exception (кроме RuntimeException) |
Да (обязательная обработка) | Восстановимые ошибки, которые программа может обработать. | IOException, SQLException, ClassNotFoundException |
| Unchecked (Непроверяемые) | RuntimeException и его наследники |
Нет | Ошибки программирования, логические ошибки в коде. | NullPointerException, IllegalArgumentException, ArrayIndexOutOfBoundsException |
| Ошибки (Errors) | Error и его наследники |
Нет (обычно не обрабатываются) | Критические системные сбои, от которых программа не может восстановиться. | OutOfMemoryError, StackOverflowError, VirtualMachineError |
Примеры кода:
// 1. Checked Exception (требует обработки)
try {
FileReader file = new FileReader("test.txt");
} catch (FileNotFoundException e) { // ОБЯЗАТЕЛЬНЫЙ блок catch
System.out.println("Файл не найден: " + e.getMessage());
}
// 2. Unchecked Exception (обработка не обязательна)
String text = null;
// System.out.println(text.length()); // Выбросит NullPointerException
// 3. Error (обычно не перехватывается)
// throw new OutOfMemoryError(); // Приведет к аварийному завершению JVM