如何捕获“从不抛出”的异常爪哇语

发布于 2024-12-03 05:32:38 字数 630 浏览 0 评论 0原文

我有以下代码块,它使用 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)

有什么想法吗?

I have the following block of code, which uses the JSCH library found at http://www.jcraft.com/jsch/

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

I know that the put method can throw a FileNotFoundException when the file specified by f is not found locally, but eclipse tells me that the catch block is unreachable, and that exception can never be thrown. When I change to:

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

I get:

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

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

〃温暖了心ぐ 2024-12-10 05:32:38

我认为您的 FileNotFoundException 被包装在 channel 方法抛出的另一个异常中,因此您无法捕获它。

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

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

I think your FileNotFoundException is wrapped in another thrown by the channel method and therefor you cannot catch it.

Try printing the class of the exception thrown by the method:

...
} catch (Exception e) {
   System.out.println(e.getClass());
}
手心的温暖 2024-12-10 05:32:38

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

Check your import statements to ensure you are not importing a FileNotFoundException class from a package besides java.io.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文