Added compatibility with php7 error handling.

This commit is contained in:
OwlyCode 2017-01-12 16:48:24 +01:00
parent 5be0944453
commit d022b19b4e
2 changed files with 14 additions and 2 deletions

View File

@ -89,6 +89,9 @@ class Error extends \Exception implements \JsonSerializable
} else if ($error instanceof \Exception) { } else if ($error instanceof \Exception) {
$message = $error->getMessage(); $message = $error->getMessage();
$originalError = $error; $originalError = $error;
} else if ($error instanceof \Error) {
$message = $error->getMessage();
$originalError = $error;
} else { } else {
$message = (string) $error; $message = (string) $error;
} }
@ -119,9 +122,9 @@ class Error extends \Exception implements \JsonSerializable
* @param Source $source * @param Source $source
* @param array|null $positions * @param array|null $positions
* @param array|null $path * @param array|null $path
* @param \Exception $previous * @param \Exception|\Error $previous
*/ */
public function __construct($message, $nodes = null, Source $source = null, $positions = null, $path = null, \Exception $previous = null) public function __construct($message, $nodes = null, Source $source = null, $positions = null, $path = null, $previous = null)
{ {
parent::__construct($message, 0, $previous); parent::__construct($message, 0, $previous);

View File

@ -680,6 +680,8 @@ class Executor
return $resolveFn($source, $args, $context, $info); return $resolveFn($source, $args, $context, $info);
} catch (\Exception $error) { } catch (\Exception $error) {
return $error; return $error;
} catch (\Error $error) {
return $error;
} }
} }
@ -778,6 +780,8 @@ class Executor
return $completed; return $completed;
} catch (\Exception $error) { } catch (\Exception $error) {
throw Error::createLocatedError($error, $fieldNodes, $path); throw Error::createLocatedError($error, $fieldNodes, $path);
} catch (\Error $error) {
throw Error::createLocatedError($error, $fieldNodes, $path);
} }
} }
@ -810,6 +814,7 @@ class Executor
* @return array|null|Promise * @return array|null|Promise
* @throws Error * @throws Error
* @throws \Exception * @throws \Exception
* @throws \Error
*/ */
private function completeValue( private function completeValue(
Type $returnType, Type $returnType,
@ -835,6 +840,10 @@ class Executor
throw $result; throw $result;
} }
if ($result instanceof \Error) {
throw $result;
}
// If field type is NonNull, complete for inner type, and throw field error // If field type is NonNull, complete for inner type, and throw field error
// if result is null. // if result is null.
if ($returnType instanceof NonNull) { if ($returnType instanceof NonNull) {