1

当 FileNotFoundException 被 IOException 覆盖时,捕获 FileNotFound 和 IOException 的目的是什么?

例子:

try {
    pref.load(new FileInputStream(file.getAbsolutePath()));
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

相对于:

try {
    pref.load(new FileInputStream(file.getAbsolutePath()));
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

如果抛出 FileNotFoundException,是否只是为了执行不同的代码?还是有不同的原因?

编辑:可以抛出 IOException 的几个例子是什么?(除了 FileNotFoundException)

4

2 回答 2

5

它允许您专门处理这种情况。当找不到文件时,您的应用程序可能需要做一些特定的事情。例如通知用户未找到文件,而不仅仅是一般错误。

所以基本上,是的,它允许在抛出 FileNotFoundException 时专门执行不同的代码。

于 2013-07-14T01:49:14.427 回答
0

它必须这样做,因为您为特定的 FileNotFound Exception 错误分配了任务。如果您使用 IOException,用户可能无法获得正确的信息,那里出了什么问题。这样以不同的方式进行,用户可以确切地知道代码中发生了什么。

于 2013-07-14T01:55:58.320 回答