gpt4 book ai didi

java - FileNotFoundException 未被 IOException 捕获

转载 作者:行者123 更新时间:2023-12-02 12:18:17 24 4
gpt4 key购买 nike

在我的程序中,我想读取一个文件,然后分析它。为此,我编写了这个简单的代码:

BufferedReader br = null;
FileReader fr = null;
try {
fr = new FileReader("E:\\Users\\myFile.txt");
br = new BufferedReader(fr);

[...]

} catch (IOException e) {
e.printStackTrace();
} finally {
try {

if (br != null)
br.close();
if (fr != null)
fr.close();

} catch (IOException ex) {
ex.printStackTrace();
}
}

不幸的是,当我的文件不存在时,我会抛出一个 java.io.FileNotFoundException 异常。但是当我阅读 java.io.FileNotFoundException 的文档时,我可以看到 java.io.IOException 是 java.io.FileNotFoundException 的父类(super class)>.

那么,为什么 java.io.FileNotFoundException 没有被 catch (IOException ex) 捕获?

我也知道我必须catch (FileNotFoundExceptionex),但我不明白为什么会出现此错误。

最佳答案

确实:

public void test() {
BufferedReader br = null;
FileReader fr = null;
try {
fr = new FileReader("E:\\Users\\myFile.txt");
br = new BufferedReader(fr);
System.out.println("OK");
} catch (IOException e) {
System.out.println("Caught in try.");
e.printStackTrace();
} finally {
try {

if (br != null)
br.close();
if (fr != null)
fr.close();

} catch (IOException ex) {
System.out.println("Caught in catch.");
ex.printStackTrace();
}
}
}

打印

Caught in try.

java.io.FileNotFoundException: E:\Users\myFile.txt (The system cannot find the path specified) ...

顺便说一句:您可以使用尝试资源来获得更有效、更整洁的解决方案。

public void test() {
try (BufferedReader br = new BufferedReader(new FileReader("E:\\Users\\myFile.txt"))){
System.out.println("OK");
} catch (IOException e) {
System.out.println("Caught in try.");
e.printStackTrace();
}
}

关于java - FileNotFoundException 未被 IOException 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997765/

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