...
Each catch
block must ensure that the program continues only with valid invariants. Consequently, the catch
block must either recover from the exceptional condition, re-throw the exception to allow a higher level of abstraction to attempt recovery, or throw an exception that is appropriate to the context of the catch
block. When recovery is possible, any instructions inside the the try
block whose execution is required must be moved outside the try
block to ensure that they are executed.
...