Назад к вопросам
Junior
69
questionbank
Какие виды исключений существуют в языке Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Java существуют три основных вида исключений:
-
Checked Exceptions (Проверяемые исключения):
- Наследуются от
java.lang.Exception. - Компилятор требует их обязательной обработки (через
try-catchблок или объявление в сигнатуре метода с помощьюthrows). - Представляют собой предсказуемые, но не всегда желательные ситуации, возникающие при нормальном ходе выполнения программы (например,
IOException,SQLException).
- Наследуются от
-
Unchecked Exceptions (Непроверяемые исключения):
- Наследуются от
java.lang.RuntimeException. - Компилятор не требует их обязательной обработки.
- Обычно указывают на ошибки в логике программы или некорректное использование API (например,
NullPointerException,ArrayIndexOutOfBoundsException,ArithmeticException). - Обработка этих исключений часто необязательна, так как они сигнализируют о багах, которые следует исправить.
- Наследуются от
-
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();
}
*/