Я использую следующую функцию, чтобы установить собственный обработчик ошибок и обработчик исключений.
set_error_handler
set_exception_handler
Обработчик ошибок преобразует ошибки в исключение. (генерирует новое исключение)
Но эти исключения не перехватываются моим собственным обработчиком исключений.
пример обработчика ошибок:
function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
throw new Exception("this was an error");
}
пример обработчика исключений:
function exceptionHandler($e){
// don't get here when exception is thrown in error handler
Logger::logException($e);
}
(я думаю, что это все равно не сработает)
Должно ли это сработать?
Или кто-нибудь может объяснить, почему это не работает?
РЕДАКТИРОВАТЬ:
Я провел несколько тестов, и он должен работать.
Исключения, созданные в ErrorHandler, перехватываются ExceptionHandler. И ошибки, инициированные в ExceptionHandler, обрабатываются ErrorHandler
Просто к сведению.
Моя проблема должна быть где-то еще
РЕДАКТИРОВАТЬ:
Я все еще не нашел, почему исключение, выброшенное в моем errorHandler, не перехвачено от моего exceptionHandler.
Например, когда у меня есть это где-то в коде.
trigger_error("this is an error"); // gets handled by the errorHandler
throw new Exception("this is an exception"); // gets handler by the exceptionHandler
Ошибка обрабатывается errorHandler, но исключение, созданное в errorHandler, не обрабатывается exceptionHandler.
Но если я бросаю исключение в том же месте, где я вызываю ошибку, это исключение обрабатывается обработчиком исключений.
(Надеюсь, это как-то понятно, что я имею в виду)
Я здесь ничего не понимаю. Есть ли идеи, в которых я должен искать проблему?