Ced*_*Sun 2 java exception-handling upcasting checked-exceptions
我注意到一些复杂库中的方法,包括标准JDK,倾向于throws向上转换异常.起初我在Apache POI的源代码中发现了这种现象,稍后会再次看到它java.io.FileWriter:
public FileWriter(String fileName) throws IOException {
super(new FileOutputStream(fileName));
}
Run Code Online (Sandbox Code Playgroud)
其中实例化FileOutputStream声明FileNotFoundException此callstack中唯一的已检查异常.然而,IOException声明,这是超级类FileNotFoundException.
那是什么原因呢?还是仅仅依赖于程序员的习惯?
避免过于频繁地更改API可能是有意义的.
今天,一个方法可以在代码中引入一个子类,IOexception但明天它可以抛出另一个.
而在签名中声明父的例外是不是过于笼统,不松动的价值,为客户,它似乎确定申报基类除外.
例如,一个不好的用法是声明throw Exception客户端无法理解异常的一般含义并因此处理它.