Мое приложение имеет зарегистрированную функцию завершения работы, и, похоже, с этим связаны некоторые проблемы, и мой метод состоит в использовании исключения с попыткой / отловом для выхода из приложения (вместо использования метода exit (), поскольку FastCGI это не нравится).
Моя проблема заключается в том, что если в блоке try / catch выбрасывается другое исключение, которое не является исключением ExitApp, это приводит к непредвиденным результатам, а конечным результатом является исключение ExitApp.
Я вижу это на PHP 5.3.6, сейчас собираюсь протестировать его на другой версии, но мне любопытно, кто-нибудь может сразу указать, что здесь не так.
<?php
// Define dummy exception class
class ExitApp extends Exception {}
try {
// Define shutdown function
function shutdown() {
echo "Shutting down...";
throw new ExitApp;
}
register_shutdown_function("shutdown");
// Throw exception!
throw new Exception("EXCEPTION!");
} catch(ExitApp $e) {
echo "Catching the exit exception!";
}
/**
* Expected Result: Uncaught Exception Error and then "Catching the exit exception!" is printed.
* Actual Result: Uncaught Exception Error for "Exception" and then Uncaught Exception Error for "ExitApp" even though it's being caught.
*/