如何捕获Java中"永不抛出"的异常

ewo*_*wok 8 java eclipse exception try-catch jsch

我有以下代码块,它使用http://www.jcraft.com/jsch/上的JSCH库

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

我知道当在本地找不到f指定的文件时,put方法可以抛出FileNotFoundException,但是eclipse告诉我catch块无法访问,并且永远不会抛出该异常.当我改为:

try {
    channel.put(f, filename);
} catch (Exception e) {
    System.out.println(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

java.io.FileNotFoundException: C:\yo\hello2 (The system cannot find the file specified)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

dac*_*cwe 9

我认为你FileNotFoundExceptionchannel方法被另一个方法所包裹,因此你无法抓住它.

尝试打印方法抛出的异常类:

...
} catch (Exception e) {
   System.out.println(e.getClass());
}
Run Code Online (Sandbox Code Playgroud)