Php 如何在Laravel中手动捕获错误异常

Php 如何在Laravel中手动捕获错误异常,php,laravel,api,Php,Laravel,Api,在我的项目中,我需要在数据库中进行批量导入和数据插入 所以,我需要知道当API请求失败时。这里的问题是PHP无法捕获该异常,因为Laravel5.6会在出现任何类型的错误时停止执行 我需要阻止laravel自动停止执行,让php决定如果API请求失败,那么让我们等待5秒钟,然后重试 为了实现这一点,我在laravel控制器中创建了一个函数 private function fetchAPI($id) { try { $rawResult = file_get_conten

在我的项目中,我需要在数据库中进行批量导入和数据插入

所以,我需要知道当API请求失败时。这里的问题是PHP无法捕获该异常,因为Laravel5.6会在出现任何类型的错误时停止执行

我需要阻止laravel自动停止执行,让php决定如果API请求失败,那么让我们等待5秒钟,然后重试

为了实现这一点,我在laravel控制器中创建了一个函数

private function fetchAPI($id) {
    try {
        $rawResult = file_get_contents('http://example.com/'.$id.'?key=5453');
    } catch (Exception $e) {
        sleep(5);
        $this->fetchAPI($id);
    }
    return json_decode($rawResult, true);
}
上述方法将使用try…catch块。但我也实现了一个布尔检查,但没有运气:

private function fetchAPI($id) {
    $rawResult = file_get_contents('http://example.com/'.$id.'?key=5453');
    if($rawResult === FALSE) {
        sleep(5);
        $this->fetchAPI($id);
    } else {
        return json_decode($rawResult, true);
    }
}

在这种情况下,如果从Laravel控制器方法发出的API请求失败,我如何重试?

使用
\Exception
dans not
Exception
,因为
Exception
被认为是
YourCurrentFileNamespace\Exception

使用
\Exception
dans not
Exception
,因为
Exception
被认为是
YourCurrentFileNamespace\Exception

首先使用
\Exception
而不是
Exception
,因为
Exception
被认为是
YourCurrentFileNamespace\Exception
第二,一些异常会以其他类型抛出(针对致命错误等),您可以在第一个之后添加第二个
catch
catch(\Throwable$e){…}
@pierreemanuellallemant似乎正在工作@Pierreemanuellallemant将其作为答案发布,我会将其标记为有效!首先使用
\Exception
而不是
Exception
,因为
Exception
被认为是
YourCurrentFileNamesapce\Exception
其次,一些异常会在其他类型中抛出(对于致命错误等),您可以在第一个之后添加第二个
catch
catch(\Throwable$e){…}
@Pierreemanuellallemant似乎在工作@Pierreemanuellallemant将其作为答案发布,我会将其标记为有效!