A break, continue, return, or throw statement cannot complete normally.
A try statement can complete normally iff both of the following are true:
The try block can complete normally or any catch block can complete normally.
If the try statement has a finally block, then the finally block can complete normally.
The try block is reachable iff the try statement is reachable.
A catch block C is reachable iff both of the following are true:
Some expression or throw statement in the try block is reachable and can throw an exception whose type is assignable to the parameter of the catch clause C. (An expression is considered reachable iff the innermost statement containing it is reachable.)
There is no earlier catch block A in the try statement such that the type of C's parameter is the same as or a subclass of the type of A's parameter.
The catch is reachable because both of its rules are met:
There is a statement in the try that is reached and can throw an
exception, and There is no catch before the one in the code that would catch the exception.