Как понять исключение проверяемое или непроверяемое
1️⃣ Как кратко ответить
Проверяемые исключения (checked exceptions) требуют обработки или объявления в сигнатуре метода с помощью throws. Они наследуются от Exception, но не от RuntimeException. Непроверяемые исключения (unchecked exceptions) не требуют обработки и наследуются от RuntimeException.
2️⃣ Подробное объяснение темы
В Java исключения делятся на две основные категории: проверяемые (checked) и непроверяемые (unchecked). Понимание разницы между ними важно для правильного управления ошибками в приложении.
Проверяемые исключения (Checked Exceptions):
Проверяемые исключения представляют собой ошибки, которые могут возникнуть в результате внешних факторов, таких как проблемы с вводом-выводом, доступом к базе данных и т.д. Компилятор Java требует, чтобы такие исключения были либо обработаны в блоке try-catch, либо объявлены в сигнатуре метода с помощью ключевого слова throws.
Пример:
import java.io.FileReader;
import java.io.IOException;
public class CheckedExample {
public static void main(String[] args) {
try {
FileReader file = new FileReader("somefile.txt"); // Попытка открыть файл
// ​
file.read(); // Чтение из файла
// ​
file.close(); // Закрытие файла
} catch (IOException e) {
e.printStackTrace(); // Обработка исключения ввода-вывода
}
}
}
FileReader file = new FileReader("somefile.txt");: Попытка открыть файл. Может выброситьFileNotFoundException, который является проверяемым исключением.file.read();: Чтение из файла. Может выброситьIOException, который также является проверяемым исключением.catch (IOException e): Обработка исключения. Компилятор требует, чтобыIOExceptionбыло обработано или объявлено вthrows.
Непроверяемые исключения (Unchecked Exceptions):
Непроверяемые исключения возникают из-за ошибок в логике программы, таких как деление на ноль или доступ к элементу массива по недопустимому индексу. Они наследуются от RuntimeException и не требуют обязательной обработки или объявления.
Пример:
public class UncheckedExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
// ​
System.out.println(numbers[3]); // Попытка доступа к несуществующему элементу массива
}
}
int[] numbers = {1, 2, 3};: Создание массива из трех элементов.System.out.println(numbers[3]);: Попытка доступа к элементу с индексом 3, который не существует. Это вызоветArrayIndexOutOfBoundsException, непроверяемое исключение.
Зачем это нужно:
- Проверяемые исключения: Обеспечивают надежность программы, заставляя разработчика обрабатывать потенциальные ошибки, которые могут возникнуть из-за внешних факторов.
- Непроверяемые исключения: Позволяют сосредоточиться на логике программы, не перегружая код обработкой ошибок, которые должны быть исправлены в процессе разработки.
Где применяется:
- Проверяемые исключения часто используются в методах, работающих с внешними ресурсами, такими как файлы, сети и базы данных.
- Непроверяемые исключения применяются для обозначения ошибок в логике программы, которые должны быть исправлены разработчиком.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться