最近搬到了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异常报告的。
这是否意味着我必须为异常处理程序提供一个实例Error
或什至更通用Throwable
?
Errors
并且Exceptions
都扩展了,Throwable
但是错误并未从扩展Exception
。
因此,您的ExceptionHandler必须接受Type的对象Throwable
才能接受Errors
。
最简单的解决方法是此方法,尽管您可能想重命名$ exception以使其清晰。
namespace MyClass;
class Throwable
{
public function exceptionHandler(\Throwable $exception)
{
//logic here
}
}
注意:Error
不应将新类与ErrorException
经典使用过的类混淆,后者通常被用作将PHP 5错误转换为Exception
具有相反含义的对象的设备。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句