Я использую следующую функцию, чтобы установить собственный обработчик ошибок и обработчик исключений.
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
Просто FYI.
Моя проблема должна быть в другом месте
РЕДАКТИРОВАТЬ:
Я все еще не нашел, почему исключение, заброшенное в моем errorHandler, не попало в мое исключениеHandler.
Например, когда у меня есть это где-то в коде.
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, не обрабатывается исключениемHandler.
Но если я создаю исключение в том же месте, где я вызываю ошибку, это исключение обрабатывается обработчиком исключений.
(Надеюсь, это как-то понятно, что я имею в виду)
Я здесь невежественный. Любые идеи, в которых я должен искать проблему?