From 0ec1e7834c6f21b8076a2a15a411f54234c9c40c Mon Sep 17 00:00:00 2001 From: Patrik Lermon Date: Tue, 12 May 2020 10:36:54 +0200 Subject: [PATCH] Handle PHP 7 Error / Throwable #8 --- src/Backoff.php | 6 ++++++ tests/BackoffTest.php | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/Backoff.php b/src/Backoff.php index c8e853c..63cf831 100644 --- a/src/Backoff.php +++ b/src/Backoff.php @@ -239,6 +239,12 @@ public function run($callback) $this->wait($attempt); try { $result = call_user_func($callback); + } catch (\Throwable $e) { + if ($e instanceof \Error) { + $e = new Exception($e->getMessage(), $e->getCode(), $e); + } + $this->exceptions[] = $e; + $exception = $e; } catch (Exception $e) { $this->exceptions[] = $e; $exception = $e; diff --git a/tests/BackoffTest.php b/tests/BackoffTest.php index 45e7b54..f431333 100644 --- a/tests/BackoffTest.php +++ b/tests/BackoffTest.php @@ -1,6 +1,7 @@ expectException(\Exception::class); + $this->expectExceptionMessage("Modulo by zero"); + + $b->run(function () { + if (version_compare(PHP_VERSION, '7.0.0') >= 0) { + return 1 % 0; + } else { + // Handle version < 7 + throw new Exception("Modulo by zero"); + } + }); + } + public function testAttempts() { $b = new Backoff(10, new ConstantStrategy(0));