对 soc 的评论(用户 answer )至a question about tail call optimisation提到 Java 7 有一个名为“抑制异常”的新特性,因为“添加了 ARM”(支持 ARM CPU?)。
在这种情况下,什么是“被抑制的异常”?在其他情况下,“被抑制的异常”将是一个被捕获然后被忽略的异常(很少是一个好主意);这显然是不同的东西。
最佳答案
为了澄清 Jon 的回答中的引用,一个方法(每次执行)只能抛出一个异常,但在 try-with-resources
的情况下,可能会出现多个异常被抛出。例如,可能会在 block 中抛出一个,而另一个可能会从 try-with-resources
提供的隐式 finally
中抛出。
编译器必须确定“真正”抛出哪些。它选择抛出在显式代码(try
block 中的代码)中引发的异常,而不是由隐式代码(finally
block )引发的异常。因此,隐式 block 中抛出的异常被抑制(忽略)。这只发生在多个异常的情况下。
关于java - 什么是抑制异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7849416/