如果异常处理不需要在方法中发生,还有一个选择——在getContents方法中添加一个throws子句以使方法抛出异常:
public static String getContents (File file)
throws IOException, FileNotFoundException {
这样,调用方法的代码将处理Exceptions 而不是方法本身。如果将s 扔给调用它的方法,则该方法中不需要try/catch块。Exception
这可能是也可能不是处理这种情况的理想方式,具体取决于该方法的预期行为方式。
编辑
再三考虑,让方法抛出异常可能是个好主意。我认为 D.Shawley 的评论总结得很好——“异常处理应该意味着只处理有意义的异常。”
在这种情况下,该getContents方法似乎获取了指定 的内容File,并将 a 返回String给调用者。
如果要在getConents方法中执行异常处理,则传达已发生错误的唯一方法是返回某种预先确定的值,例如null向调用者通知发生了错误。
但是,通过让方法本身向调用者抛出异常,调用者可以选择做出相应的反应:
try {
String contents = getContents(new File("input.file"));
} catch (IOException ioe) {
// Perform exception handling for IOException.
} catch (FileNotFoundException fnfe) {
// Inform user that file was not found.
// Perhaps prompt the user for an alternate file name and try again?
}
与其让setContents方法提出自己的协议来通知发生了错误,不如将IOException和FileNotFoundException返回给方法调用者可能会更好,因此可以在可以采取适当的替代操作的地方执行异常处理地方。
只有在可以进行一些有意义的处理时才应执行异常处理。