php7 中的错误和异常处理


Error and exception handling in php7

最近搬到了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的实例?

ErrorsExceptions 都扩展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