Трассировка стека содержит как минимум 4 интересных бита информации:
[1] Тип.IOException имеет подклассы.Возможно, это FileNotFoundException.
[2] трассировка стека.Это строка, указывающая, где в исходном файле происходит ошибка, и «цепочка вызовов», которая привела к выполнению этого метода.
[3] сообщение.Исключения могут содержать сообщения, объясняющие более понятный английский.
[4] причинно-следственная цепочка.У исключений может быть причина, и обычно это исключение само по себе интересно (и эта причина может иметь причину).
Есть даже больше (например, цепочка подавления).
Если вы когда-нибудь поймаетеисключение и попытка его напечатать, вы испортили , распечатать ВСЕ ЭТО сложно, и все же это важно.
Итак, НЕ поймайте исключение, если вы не можетена самом деле справиться с этим.распечатывая сообщение об ошибке или регистрируя его не обрабатывая его .
Здесь просто сделайте так, чтобы ваш метод был объявлен как throws IOException.Если это невозможно (может произойти, только если вы расширяете / реализуете методы из суперклассов / интерфейсов, которые не позволяют вам этого делать), то код «Я не знаю, что с этим делать» выглядит так:
catch (ExceptionICannotHandle e) {
throw new RuntimeException(e);
}
- это единственный способ гарантировать, что вы получите всю эту информацию.
Я предлагаю вам обновить свой код, и тогда вам станет ясна причина этой ошибки.