Ответ
Исключение (Exception) в Java — это объект, который сигнализирует о возникновении аномальной или исключительной ситуации во время выполнения программы, прерывающей нормальный поток инструкций. Механизм исключений позволяет централизованно и структурированно обрабатывать ошибки.
Иерархия: Все исключения являются подклассами Throwable. Два основных подтипа:
Error: Критические, невосстанавливаемые ошибки системы (например,OutOfMemoryError). Обычно не перехватываются.Exception: Исключительные ситуации, которые программа может и должна обрабатывать.- Проверяемые (Checked) исключения: Наследники
Exception(кромеRuntimeException). Компилятор требует их обработки (try-catch) или объявления вthrows. Пример:IOException,SQLException. - Непроверяемые (Unchecked) исключения: Наследники
RuntimeException. Возникают из-за логических ошибок программиста. Обработка не обязательна. Пример:NullPointerException,IllegalArgumentException,ArrayIndexOutOfBoundsException.
- Проверяемые (Checked) исключения: Наследники
Базовый шаблон обработки:
try {
// Код, который может выбросить исключение
FileInputStream fis = new FileInputStream("file.txt");
int data = fis.read();
} catch (FileNotFoundException e) {
// Обработка конкретного исключения
System.err.println("Файл не найден: " + e.getMessage());
} catch (IOException e) {
// Обработка более общего исключения
System.err.println("Ошибка ввода-вывода.");
} finally {
// Код, выполняющийся всегда (например, для закрытия ресурсов)
if (fis != null) fis.close();
}
Принципы использования:
- Используйте проверяемые исключения для ожидаемых ошибок, от которых можно восстановиться.
- Используйте непроверяемые исключения для ошибок программирования (предусловия, инварианты).
- Предпочитайте специфичные исключения более общим.
- В
catch-блоках либо восстановите состояние, либо залогируйте ошибку и пробросьте её дальше.