Что ж, моя первая мысль: блок catch
может только иметь значение, если выбрасывается IOException
- поэтому мы точно знаем, что это происходит. И также мы знаем, что без блока catch это исключение будет распространяться из метода wfsGetCapabilities
(возможно, вы добавили соответствующее объявление throws
при удалении блока catch).
Таким образом, есть вероятность, что в «рабочем» случае вызывающий код перехватывает IOException и обрабатывает его таким образом, что ваш метод работает, судя по выводу. Конечно, ваш метод не работает и выдает исключение, но, возможно, есть запасной вариант по умолчанию (или аналогичный), который вызывается в случае ошибки?
Так что это "странная" часть, мы надеемся разобраться. Что касается «проблемной» части, если вы получаете NullPointerException
с блоком catch, но не без него, ясно, что ваша логика блока catch не совсем верна и вызывает эту проблему. Из того, что вы опубликовали, не похоже, что какая-либо из этих непосредственных ссылок будет нулевой - посмотрите на трассировку стека и определите, из какой строки выдается исключение, затем исправьте его, как и любой другой NPE.