gpt4 book ai didi

java - 为什么我的 Java try...catch 会出错?

转载 作者:行者123 更新时间:2023-11-29 09:41:02 25 4
gpt4 key购买 nike

我开始自学更多有关 Java 错误处理的知识,这是我的第一个程序,我尝试在其中查看特定错误,而不是使用 catch (Exception e) 作为通用捕获-all catch.

我正在删除一个文件并返回一条消息,说明文件已成功删除或删除失败。在删除失败的情况下,如果找不到文件,我想传递一条错误消息。

这是我到目前为止的位置:

public static void deleteOldConcatFiles(File concatFile) {
try
{
if(concatFile.delete()) {
System.out.println(concatFile.getName() + " is deleted!");
} else {
System.out.println("Delete operation failed.");
}
}
//
catch(FileNotFoundException f) {
System.out.println("Exception: "+ f.getMessage().getClass().getName());
}
}

当我运行它时,我收到警告:这是 FileNotFoundException 的无法访问的 catch block 。此异常永远不会从 try 语句主体中抛出。

但是,当我使用这个 catch block 运行时,

catch(Exception f) {
System.out.println("Exception: "+e.getMessage().getClass().getName());
}

我没有收到任何错误或警告消息。

为什么会发生这种情况,我该如何解决?

最佳答案

File.delete() 不会抛出 FileNotFoundException,即使文件不存在也是如此。

FileNotFoundException 是一个已检查的异常(即,不是 RuntimeException),因此抛出它的任何代码都必须声明它。因为 File.delete() 没有声明它抛出 FileNotFoundException,编译器保证它不会,并且可以保证永远不会调用您的 catch block 。

第二个包罗万象的 block 不会生成警告,因为它还会捕获 RuntimeExceptions(RuntimeException extends Exception),编译器不会为您检查。因此,它可能会被调用,编译器不确定,所以它不会警告您。

关于java - 为什么我的 Java try...catch 会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20227668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com