Обычный шаблон для решения этой проблемы - цепочка исключений . Вы просто оборачиваете FileNotFoundException в RuntimeException:
catch(FileNotFoundException e) {
throw new RuntimeException(e);
}
Этот шаблон применим не только в тех случаях, когда исключение не может возникнуть в конкретной ситуации (например, в вашей), но также в том случае, если у вас нет средств или намерения действительно обработать исключение (например, сбой связи с базой данных).
Редактировать : Остерегайтесь этого похожего анти-паттерна, который я слишком часто видел в дикой природе:
catch(FileNotFoundException e) {
throw new RuntimeException(e.getMessage());
}
Делая это, вы выбрасываете всю важную информацию в исходной трассировке стека, что часто затрудняет отслеживание проблем.
Другое редактирование: Как правильно заметил в своем ответе Турбьёрн Равн Андерсен, не повредит указать, почему вы объединяете исключение, либо в комментарии, либо, что еще лучше, в качестве исключения сообщение:
catch(FileNotFoundException e) {
throw new RuntimeException(
"This should never happen, I know this file exists", e);
}