Junior
Классҳои асосии истисно дар Java кадомҳоянд?
sobes.tech AI
Ҷавоб аз AI
В Java ієрархія виключень починається з класу Throwable. Він має два основних підкласи: Error і Exception.
Error:
- Представляє серйозні проблеми, які зазвичай не слід ловити додатком.
- Виникають через помилки віртуальної машини (JVM) або оточення.
- Приклади:
OutOfMemoryError,StackOverflowError.
Exception:
- Представляє умови, які додаток може і повинен обробляти.
- Поділяється на два типи:
- Checked Exceptions (перевіряємі виключення):
- Повинні бути або зловлені (
try-catch), або оголошені у сигнатурі методу (throws). - Компилятор примусово перевіряє їх обробку.
- Зазвичай представляють передбачувані, але небажані умови, які можуть виникнути під час виконання.
- Приклади:
IOException,FileNotFoundException,SQLException.
- Повинні бути або зловлені (
- Unchecked Exceptions (неперевіряємі виключення):
- Наслідуються від
RuntimeException. - Не вимагають обов'язкової обробки або оголошення у сигнатурі методу.
- Часто вказують на помилки в логіці програми або неправильне використання API.
- Приклади:
NullPointerException,ArrayIndexOutOfBoundsException,IllegalArgumentException.
- Наслідуються від
- Checked Exceptions (перевіряємі виключення):
Ось основні класи виключень:
java.lang.Throwable(базовий клас)java.lang.Error(необроблювані помилки)java.lang.OutOfMemoryErrorjava.lang.StackOverflowError
java.lang.Exception(оброблювані виключення)java.io.IOException(Checked)java.io.FileNotFoundException(Checked)
java.sql.SQLException(Checked)java.lang.RuntimeException(Unchecked)java.lang.NullPointerExceptionjava.lang.IllegalArgumentExceptionjava.lang.IndexOutOfBoundsException
Таблиця порівнянь:
| Особливість | Checked Exception | Unchecked Exception (RuntimeException) |
Error |
|---|---|---|---|
| Наслідування | Exception (крім RuntimeException та його нащадків) |
RuntimeException |
Error |
| Примусова обробка/оголошення | Так | Ні | Ні |
| Причина виникнення | Передбачувані збої | Помилки програмування, неправильне використання | Серйозні проблеми JVM/середовища |
| Відновлення після | Часто можливо | Рідко (вказує на баг) | Майже неможливо |
Приклад обробки виключень:
// Приклад обробки checked exception і unchecked exception
public class ExceptionHandlingDemo {
public void readFile(String fileName) {
try {
// Спроба читання файлу - може викинути FileNotFoundException (checked)
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.FileReader(fileName));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close(); // Також може викинути IOException (checked)
// Приклад unchecked exception (може виникнути, якщо fileName == null)
int length = fileName.length(); // NullPointerException (unchecked)
} catch (java.io.FileNotFoundException e) {
// Обробка FileNotFoundException
System.err.println("Помилка: Файл не знайдено - " + e.getMessage());
} catch (java.io.IOException e) {
// Обробка загальних помилок вводу-виводу
System.err.println("Помилка читання файлу: " + e.getMessage());
} catch (java.lang.NullPointerException e) {
// Обробка NullPointerException - необов'язкова, але хороша практика для відлагодження
System.err.println("Помилка: Використана нульова посилання - " + e.getMessage());
}
}
public static void main(String[] args) {
ExceptionHandlingDemo demo = new ExceptionHandlingDemo();
demo.readFile("non_existent_file.txt"); // Викличе FileNotFoundException
demo.readFile(null); // Може викликати NullPointerException
}
}