Why catch-and-rethrow instead of just using finally?