Java Reference
In-Depth Information
♦ If the run-time type of V is assignment compatible with a catchable exception
class of any catch clause of the try statement, then the first (leftmost) such catch
clause is selected. The value V is assigned to the parameter of the selected catch
clause, and the Block of that catch clause is executed. Then there is a choice:
If the catch block completes normally, then the finally block is executed.
Then there is a choice:
If the finally block completes normally, then the try statement completes
normally.
If the finally block completes abruptly for any reason, then the try state-
ment completes abruptly for the same reason.
If the catch block completes abruptly for reason R , then the finally block is
executed. Then there is a choice:
If the finally block completes normally, then the try statement completes
abruptly for reason R .
If the finally block completes abruptly for reason S , then the try state-
ment completes abruptly for reason S (and reason R is discarded).
♦ If the run-time type of V is not assignment compatible with a catchable excep-
tion class of any catch clause of the try statement, then the finally block is ex-
ecuted. Then there is a choice:
If the finally block completes normally, then the try statement completes
abruptly because of a throw of the value V .
If the finally block completes abruptly for reason S , then the try statement
completes abruptly for reason S (and the throw of value V is discarded and
forgotten).
• If execution of the try block completes abruptly for any other reason R , then the fi-
nally block is executed, and then there is a choice:
♦ If the finally block completes normally, then the try statement completes ab-
ruptly for reason R .
♦ If the finally block completes abruptly for reason S , then the try statement com-
pletes abruptly for reason S (and reason R is discarded).
Search WWH ::




Custom Search