gpt4 book ai didi

java - 嵌套的 Try-Catch block 未捕获异常

转载 作者:行者123 更新时间:2023-12-01 16:43:20 33 4
gpt4 key购买 nike

我的程序正在尝试扫描我的目录以搜索是否存在 .cmp 或 .txt 文件。

如果 fileName 等于“test”,并且 test.cmp 和 test.txt 文件都不存在,则尽管我在第一个 catch 下使用了 try-catch block ,但我的程序仍会抛出 FileNotFoundException。我尝试移动第二个 try-catch block ,但似乎没有任何效果 - 我使用不存在的文件测试代码的所有内容最终仍然会引发异常。

public int checkFileExistence() {
BufferedReader br = null;
int whichFileExists = 0;


try {//check to see if a .cmp exists
br = new BufferedReader(new FileReader(fileName + ".cmp"));
whichFileExists = 0;// a .cmp exists
}

catch (IOException e){ //runs if a .cmp file has not been found
try {//check to see if a .txt file exists
br = new BufferedReader(new FileReader(fileName + ".txt"));
whichFileExists = 1;//a .txt file exists
}
catch (IOException e2) {//if no .txt (and .cmp) file was found

e2.printStackTrace();
whichFileExists = 2; //no file exists

}

}

finally {

try {
br.close();
}

catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


return whichFileExists;
}


我希望该程序能够工作,但每次测试该程序时,该程序都会抛出 FileNotFoundException,其中显示“test.txt”不存在。

最佳答案

由于这一行,它正在打印该异常:

e2.printStackTrace();

它按照您的预期工作,只是打印它得到的错误。如果您不想看到这些 printStackTrace() 调用,可以删除它们。好吧,不要删除最后一个 catch block 中的那个,否则你永远不知道那里是否有问题。

另外一点,这种设计完全基于异常,不推荐这样做。我是sure File 类中有一些方法可以检查文件是否存在。

关于java - 嵌套的 Try-Catch block 未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297042/

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