Ответ
Нет, ключевое слово throws не отменяет необходимость обработки проверяемых исключений (checked exceptions). Оно лишь объявляет, что метод может выбросить такое исключение. Вызывающий код обязан либо обработать его с помощью try-catch, либо объявить в своем собственном throws.
Два законных способа:
1. Обработка исключения (try-catch):
void callerMethod() {
try {
methodThatThrows(); // Метод с throws IOException
} catch (IOException e) {
// Логика обработки ошибки
System.err.println("Ошибка ввода-вывода: " + e.getMessage());
}
}
2. Проброс исключения дальше (объявление throws):
void callerMethod() throws IOException { // Пробрасываем ответственность выше
methodThatThrows();
}
Важное уточнение:
- Проверяемые исключения (Checked Exceptions): Классы, наследующие
Exception(но неRuntimeException). Требуют обязательной обработки одним из двух способов выше. Пример:IOException,SQLException. - Непроверяемые исключения (Unchecked Exceptions): Классы, наследующие
RuntimeException. Обработка для них не обязательна. Пример:NullPointerException,IllegalArgumentException.