Как выполнить код в конце работы скрипта, даже после exit(), ошибки или исключения?

Можно добавить пользовательские обработчики с помощью следующих функций.

В конце работы скрипта:

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

При ошибке:

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

При исключении:

callable set_exception_handler ( callable $exception_handler )