【发布时间】:2011-08-17 00:18:40
【问题描述】:
我使用以下函数来设置我自己的错误处理程序和异常处理程序。
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处理。
但是,如果我在触发错误的同一个地方抛出异常,则该异常将由异常处理程序处理。
(希望我的意思可以理解)
我在这里一无所知。 我必须寻找问题的任何想法?
【问题讨论】:
标签: php