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

时间:2018-05-12 09:06:11

标签: php laravel api

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

因此,我需要知道API请求失败时。这里的问题是PHP无法捕获该异常,因为Laravel 5.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);
    }
}

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

1 个答案:

答案 0 :(得分:3)

使用\Exception不是Exception,因为Exception被视为YourCurrentFileNamespace\Exception