Ответ
Блок catch в Java предназначен для перехвата и обработки исключений, которые могут быть сгенерированы в соответствующем блоке try.
Принцип работы:
- Код в блоке
tryвыполняется. - Если в
tryвозникает исключение, его выполнение немедленно прерывается. - JVM ищет подходящий блок
catch, тип исключения которого соответствует типу выброшенного исключения или является его суперклассом. - Если такой блок найден, управление передается в него для обработки ошибки.
Синтаксис и пример:
try {
FileReader file = new FileReader("nonexistent.txt"); // Может выбросить FileNotFoundException
int data = file.read();
} catch (FileNotFoundException e) {
// Обработка конкретного исключения
System.err.println("Файл не найден: " + e.getMessage());
// Возможны корректирующие действия: создание файла, запись в лог, уведомление пользователя
} catch (IOException e) {
// Более общий обработчик для других ошибок ввода-вывода
System.err.println("Ошибка ввода-вывода: " + e.getMessage());
}
Важные аспекты:
- Можно иметь несколько блоков
catch. Они проверяются сверху вниз, поэтому более конкретные исключения должны быть указаны раньше общих (например,FileNotFoundExceptionдоIOException). - Если исключение не перехвачено ни одним
catch, оно передается (пробрасывается) в вызывающий метод, что может привести к аварийному завершению программы. - Блок
catchпозволяет не только логировать ошибку, но и выполнять восстановительные действия или преобразовывать исключение в более понятное для вышележащего слоя.