似乎我在php7.0.3中发现了一些错误,但我不确定可能问题是在我这边,所以我决定先写在这里
我最近将我的服务器php
版本更新为php7.0.3
,当然还有关于弃用方法的错误等我一个接一个地修复它们直到我来到这个
Uncaught TypeError:传递给Debug :: _ exceptionHandler()的参数1必须是Exception的实例,在SomePath \ Debug.php中给出Error的实例:518堆栈跟踪:#0 [内部函数]:Debug :: _ exceptionHandler(对象(错误))#1 {main}抛出
我查看了Debug
课程,并在set_exception_handler
set_error_handler
和function enable()
次来电
public static function enable( ..some params.. ){
...
set_exception_handler(array(__CLASS__, '_exceptionHandler'));
set_error_handler(array(__CLASS__, '_errorHandler'));
}
// where _exceptionHandler function defined as
public static function _exceptionHandler(Exception $exception)
{ ... }
// and _errorHandler defined as
public static function _errorHandler($severity, $message, $file, $line, $context)
{ ... }
实际上错误对我来说很明显它告诉它不能将Error
类型对象传递给_exceptionHandler
,因为它超出了Exception
类型,但问题是为什么它会尝试将其传递给_exceptionHandler
而不是_errorHandler
,因为它也定义了?是错误还是我在error
和exception
处理程序的定义中遗漏了什么?
注意:我尝试使用set_error_handler
将其作为第二个参数E_ALL
等传递,但注意有帮助......
我也遇到错误,应该由_errorHandler
处理,而是由_exceptionHandler
处理
未捕获错误:在SomePath中调用未定义的函数set_magic_quotes_runtime()...
有人可以帮我这个吗?
由于
答案 0 :(得分:4)
PHP 7中的异常层次结构已更改,如果您查看set_exception_handler
void handler ( Throwable $ex );
,您会注意到:
从PHP 7开始,大多数错误都是通过抛出错误异常来报告的,错误异常也会被处理程序捕获。 Error和Exception都实现了Throwable接口。这是PHP 7以来的处理程序签名:
newArgs[i]
可以找到PHP 7中异常层次结构更改的详细信息manual page。