I confirmed with the following code that if you call ‘exit’ withing a ‘try’ block the ‘finally’ block does *not* execute. That’s probably what you would expect. But now we know.
register_shutdown_function( 'handle_shutdown' ); try { exit; } catch ( Exception $ex ) { echo "caught...\n"; } finally { echo "finally...\n"; } function handle_shutdown() { echo "shutdown...\n"; }