最近搬到了php7。发生以下错误:
argument 1 passed to MyClass'Throwable::exceptionHandler() must be an instance of Exception, instance of Error given
和各自的班级
namespace MyClass;
class Throwable
{
public function exceptionHandler('Exception $exception)
{
//logic here
}
}
如文档中所述
现在,大多数错误都是通过引发错误异常来报告的。
这是否意味着我必须向异常处理程序提供Error
甚至更通用Throwable
的实例?
Errors
和 Exceptions
都扩展Throwable
但是错误不会从Exception
扩展。
因此,异常处理程序必须接受类型 Throwable
的对象才能接受Errors
。
最简单的解决方法是这样,尽管您可能希望重命名$exception以使其清晰。
namespace MyClass;
class Throwable
{
public function exceptionHandler('Throwable $exception)
{
//logic here
}
}
注意:新的Error
类不应与经典用作将 PHP 5 错误转换为具有符号意义的Exception
对象的设备的ErrorException
混淆。
http://php.net/manual/en/class.error.php