“躲避例外”是什么意思?
2022-09-01 05:56:31
在 Java™ 教程的“异常的优点”部分中:
方法可以避免其中引发的任何异常,从而允许调用堆栈更远的方法捕获它。
[...]
...回避异常需要中间人方法的一些努力。可以在方法中引发的任何已检验异常都必须在其子句中指定。
throws
这里的“躲避例外”是什么意思?我搜索了网络和FOLDOC(免费在线计算词典),但没有找到任何看起来很有前途的东西。
在 Java™ 教程的“异常的优点”部分中:
方法可以避免其中引发的任何异常,从而允许调用堆栈更远的方法捕获它。
[...]
...回避异常需要中间人方法的一些努力。可以在方法中引发的任何已检验异常都必须在其子句中指定。
throws
这里的“躲避例外”是什么意思?我搜索了网络和FOLDOC(免费在线计算词典),但没有找到任何看起来很有前途的东西。
好吧,躲闪只是意味着低下头,以避免被击中或看到。在这种情况下,“躲避异常”只是意味着避免你的代码被异常击中。
为了使您的方法不被异常击中,您可以通过在方法上声明异常来将其进一步向上抛出调用堆栈throws
public void myMethod() throws IOException {
}
如果你不躲避,你必须这样做:catch
public void myMethod() {
try {
// ...
} catch(IOException e) {
// handle exception
}
“躲避异常”意味着“不处理异常”。这实际上解释了这个名字:躲避意味着“逃避;躲闪”。
躲避异常的方法根本不处理它(因为,例如,这不是它的目的),并让异常被抛给调用方法。
例如,考虑一个方法,其目的是计算文件中的行数。这将是一个简单的实现(Java 8):
private static long numberOfLines(Path path) throws IOException {
try (BufferedReader br = Files.newBufferedReader(path)) {
return br.lines().count();
}
}
请注意,此方法不处理 由 抛出的 那个,因为这不是方法目标。它躲避并让调用方适当地处理它。IOException
Files.newBufferedReader(path)
请注意,调用方也可能回避异常,让其调用方处理它,依此类推。