为什么在IOException覆盖时使用FileNotFoundException

时间:2013-07-14 01:42:56

标签: java try-catch ioexception filenotfoundexception

IOException覆盖FileNotFoundException时捕获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)

2 个答案:

答案 0 :(得分:5)

它允许您专门处理该案例。也许您的应用程序需要在找不到文件时执行某些操作。例如通知用户没有找到文件,而不仅仅是一般错误。

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

答案 1 :(得分:0)

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