Исключения PHP, созданные в обработчике ошибок, не перехватываются обработчиком исключений

Я использую следующую функцию, чтобы установить собственный обработчик ошибок и обработчик исключений.

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.

Но если я бросаю исключение в том же месте, где я вызываю ошибку, это исключение обрабатывается обработчиком исключений.

(Надеюсь, это как-то понятно, что я имею в виду)

Я здесь ничего не понимаю. Есть ли идеи, в которых я должен искать проблему?

5
задан mjspier 6 May 2011 в 07:29
поделиться