forward caught exception

This commit is contained in:
Christian Flothmann 2019-12-09 21:23:16 +01:00
parent c0b2ade0a3
commit 98e18d33df

View File

@ -229,7 +229,7 @@ class PropertyAccessor implements PropertyAccessorInterface
$value = $zval[self::VALUE]; $value = $zval[self::VALUE];
} }
} catch (\TypeError $e) { } catch (\TypeError $e) {
self::throwInvalidArgumentException($e->getMessage(), $e->getTrace(), 0); self::throwInvalidArgumentException($e->getMessage(), $e->getTrace(), 0, $e);
// It wasn't thrown in this class so rethrow it // It wasn't thrown in this class so rethrow it
throw $e; throw $e;
@ -253,7 +253,7 @@ class PropertyAccessor implements PropertyAccessorInterface
return null !== self::$previousErrorHandler && false !== \call_user_func(self::$previousErrorHandler, $type, $message, $file, $line, $context); return null !== self::$previousErrorHandler && false !== \call_user_func(self::$previousErrorHandler, $type, $message, $file, $line, $context);
} }
private static function throwInvalidArgumentException($message, $trace, $i) private static function throwInvalidArgumentException($message, $trace, $i, $previous = null)
{ {
// the type mismatch is not caused by invalid arguments (but e.g. by an incompatible return type hint of the writer method) // the type mismatch is not caused by invalid arguments (but e.g. by an incompatible return type hint of the writer method)
if (0 !== strpos($message, 'Argument ')) { if (0 !== strpos($message, 'Argument ')) {
@ -267,7 +267,7 @@ class PropertyAccessor implements PropertyAccessorInterface
$type = substr($message, 2 + $j, strpos($message, ' given', $j) - $j - 2); $type = substr($message, 2 + $j, strpos($message, ' given', $j) - $j - 2);
$message = substr($message, $pos, $j - $pos); $message = substr($message, $pos, $j - $pos);
throw new InvalidArgumentException(sprintf('Expected argument of type "%s", "%s" given', $message, 'NULL' === $type ? 'null' : $type)); throw new InvalidArgumentException(sprintf('Expected argument of type "%s", "%s" given', $message, 'NULL' === $type ? 'null' : $type), 0, $previous);
} }
} }