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

时间:2011-09-06 16:01:36

标签: 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.");
}

我知道当在本地找不到f指定的文件时,put方法会抛出FileNotFoundException,但是eclipse告诉我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 个答案:

答案 0 :(得分:8)

我认为你的FileNotFoundExceptionchannel方法抛出的另一个包裹着,因此你无法捕捉它。

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

...
} catch (Exception e) {
   System.out.println(e.getClass());
}

答案 1 :(得分:2)

检查您的import语句,确保您没有从FileNotFoundException以外的包中导入java.io类。