To clarify the quote in Jon's answer, only one exception can be thrown by a method (per execution) but it is possible, in the case of a try-with-resources
, for multiple exceptions to be thrown. For instance one might be thrown in the block and another might be thrown from the implicit finally
provided by the try-with-resources
.
The compiler has to determine which of these to "really" throw. It chooses to throw the exception raised in the explicit code (the code in the try
block) rather than the one thrown by the implicit code (the finally
block). Therefore the exception(s) thrown in the implicit block are suppressed (ignored). This only occurs in the case of multiple exceptions.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…