考虑以下未完成方法的片段:
private void synchronize(TreeItem<String> treeItem, Path newDir) {
for (TreeItem<String> i : treeItem.getChildren()) {
if (i.getGraphic().equals(GREEN_DOT)) {
copyFile(new File(i.getValue()), newDir.toFile(), DEFAULT_COPY_BUFFER_SIZE);
}
}
}
在我的项目中,copyFile()调用带有下划线,IDE显示上述错误。我理解异常是什么,但我不太确定的是为什么需要通过在方法签名中添加“throws IOException”来修复此特定错误。为什么需要在那里;是不是在copyFile()的执行中抛出异常呢?通过在方法签名中键入这个小公式获得的效用是什么,将它传播到任何调用另一个方法的方法中已经写入了?
答案 0 :(得分:2)
您需要声明您的方法可以抛出IOException
,以便调用代码知道它可能会出现。方法中调用的方法声明throws IOException
,因此编译器知道可能会在其中抛出IOException
并中断您的方法,因此您还必须声明可以抛出IOException
你的方法也可以中断调用代码。阻止错误的另一种方法是实际捕获异常。
答案 1 :(得分:1)
Java语言规范要求它。 原因可能是内置更好的文档,或者程序员总是记得处理这些异常。
如您所知,这不是强制性的,因为其他语言不需要这种声明,但Java确实如此。
答案 2 :(得分:-2)
不,所有处理文件的方法都需要抛出IOexception。