Recently moved to php7. The following error occurs:
argument 1 passed to MyClass\Throwable::exceptionHandler() must be an instance of Exception, instance of Error given
And the respective class
namespace MyClass;
class Throwable
{
public function exceptionHandler(\Exception $exception)
{
//logic here
}
}
As stated in docs
most errors are now reported by throwing Error exceptions.
Does it mean that I have to provide an instance of Error
or even more general Throwable
to the exception handler?
Errors
andExceptions
both extendThrowable
however Errors are not extended fromException
.Therefore, your ExceptionHandler must accept an object of Type
Throwable
in order to acceptErrors
.Simplest fix is this, though you may want to rename $exception to make it clear.
Note: The new
Error
class should not be confussed with anErrorException
which has classicly been used as a device for turning PHP 5 errors intoException
objects with symantic meaning.http://php.net/manual/en/class.error.php