Php 如何在Laravel中手动捕获错误异常
在我的项目中,我需要在数据库中进行批量导入和数据插入 所以,我需要知道当API请求失败时。这里的问题是PHP无法捕获该异常,因为Laravel5.6会在出现任何类型的错误时停止执行 我需要阻止laravel自动停止执行,让php决定如果API请求失败,那么让我们等待5秒钟,然后重试 为了实现这一点,我在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
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 notException
,因为Exception
被认为是YourCurrentFileNamespace\Exception使用\Exception
dans notException
,因为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将其作为答案发布,我会将其标记为有效!