我使用ErrorException作为错误和异常的中央错误处理函数:
例子:
set_error_handler('my_error_handler');
set_exception_handler('my_exception_handler');
function my_error_handler ($errno, $errstr, $errfile, $errline)
{
my_exception_handler(new ErrorException($errstr, 0, $errno, $errfile, $errline));
}
function my_exception_handler ($e)
{
echo $e->getSeverity();
echo $e->getCode();
echo $e->getMessage();
}
现在它似乎$e->getSeverity();
只存在于default 中ErrorException
,而不存在于 default 中Exception
;
因为当throw new Exception('test');
我得到一个Fatal error: Call to undefined method Exception::getSeverity()
.
但是当我throw new ErrorException('test');
按预期工作时。
这似乎合乎逻辑,但有没有办法我仍然可以使用throw new Exception('test');
而不会出现致命错误?大多数第三方库都使用Exception(不是ErrorException),所以当第三方异常发生时会出现问题,会导致Fatal Error。我该如何解决这个问题?