Обработка ошибочных ситуаций и исключений
Контекст задачи
Каждая программа подвержена ошибкам: неверный ввод пользователя, отсутствие файла, сбой сетевого соединения. Без корректной обработки ошибок программа «падает», теряя данные и раздражая пользователей. Исключения — это механизм языка, позволяющий отделять логику обработки ошибок от основного сценария и делать программу надёжной.
Формулировка
Разработайте 3 варианта обработки ошибок в вашей программе: (1) перехват стандартного исключения, (2) обработка нескольких типов исключений с блоком finally, (3) создание и использование собственного исключения.
Ожидаемый результат
- Класс с тремя методами, каждый из которых демонстрирует один из вариантов обработки ошибок
- Корректное использование
try,catch,finally - Пользовательское исключение, расширяющее
ExceptionилиRuntimeException - Информативные сообщения об ошибках
Инструментарий
Методы и подходы:
try-catch-finally— базовый механизм обработки исключений- Множественные
catchдля разных типов исключений throw/throws— объявление и выброс исключений- Создание пользовательского класса-исключения (расширение
Exception) - Финализация ресурсов через
try-with-resources(если применимо)
Инструменты:
- Язык: Java
- IDE: IntelliJ IDEA / Eclipse
Навигатор
- Обработка исключений в Java
- Вопрос: Какие ошибки могут возникнуть в вашем проекте и как вы предупредите пользователя о каждой из них?
- Примеры использования исключений
// 1. Попытка деления на ноль
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Деление на ноль невозможно!");
}
// 2. Обработка ошибок ввода-вывода
try {
File file = new File("example.txt");
FileInputStream fis = new FileInputStream(file);
// действия с ресурсами
} catch (FileNotFoundException e) {
System.out.println("Файл не найден: " + e.getMessage());
} catch (IOException e) {
System.out.println("Ошибка ввода-вывода: " + e.getMessage());
} finally {
try {
if (fis != null) fis.close();
} catch (IOException e) {
System.out.println("Ошибка закрытия файла: " + e.getMessage());
}
}
// 3. Собственное исключение
class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
📝 Критерии оценки
[ ] Реализован перехват стандартного исключения (ArithmeticException или аналог)
[ ] Реализована обработка нескольких типов исключений с finally
[ ] Создано пользовательское исключение, расширяющее Exception
[ ] Сообщения об ошибках информативны и содержат описание проблемы
[ ] Ресурсы корректно освобождаются (блок finally или try-with-resources)
[ ] Исключения не подавляются — ошибки не игнорируются пустым catch