как поймать исключение, которое "никогда не выдается" в Java - PullRequest
8 голосов
/ 06 сентября 2011

У меня есть следующий блок кода, который использует библиотеку JSCH, найденную в http://www.jcraft.com/jsch/

try {
    channel.put(f, filename);
} catch (FileNotFoundException e) {
    System.out.println("no file.");
}

Я знаю, что метод put может вызвать исключение FileNotFoundException, если файл, указанный в f, не найден локально, но затмение говорит мне, что блок catch недоступен, и это исключение никогда не может быть выдано.Когда я изменяю на:

try {
    channel.put(f, filename);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

, я получаю:

java.io.FileNotFoundException: C:\yo\hello2 (The system cannot find the file specified)

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 06 сентября 2011

Я думаю, что ваш FileNotFoundException обернут в другой метод, полученный методом channel, и поэтому вы не можете его поймать.

Попробуйте напечатать класс исключения, выданного методом:

...
} catch (Exception e) {
   System.out.println(e.getClass());
}
2 голосов
/ 06 сентября 2011

Проверьте свои операторы импорта, чтобы убедиться, что вы не импортируете класс FileNotFoundException из пакета, кроме java.io.

...