Ответ
Нет, обработка не обязательна, но исключение должно быть объявлено. Ключевое слово throws в сигнатуре метода указывает, что метод может сгенерировать проверяемое (checked) исключение и не обрабатывает его внутри.
Ваши варианты:
- Пробросить дальше: Объявить это же исключение в вызывающем методе.
void caller() throws IOException { callee(); // Метод с throws IOException } - Обработать на месте: Использовать
try-catchв вызывающем методе.void caller() { try { callee(); } catch (IOException e) { // Обработка } }
Для непроверяемых исключений (RuntimeException) использование throws не требуется и носит лишь документационный характер.