主机脱机时,如何处理RequestException

问题描述 投票:0回答:1

我正在laravel框架内使用Guzzle,但是当主机脱机时,我得到的是异常,而不是可以通过getStatusCode()获得的状态码。我现在尝试绕过请求,但是在此方法之外,我有一个检查状态码的方法。我的问题是我如何才能在catch中返回正确的响应,以便可以在此方法之外调用getStatusCode()

我发出请求的代码如下:

public function makeRequest($method, $requestUrl, $queryParams = [])
    {
        try{
            $client = new Client(['http_errors' => false]);
            return $client->request($method, $requestUrl, [
                'query' => $queryParams
            ]);
        }catch(RequestException $exception){
            LOG::info($exception->getMessage());
            return $exception->getResponse();
        }
    }
php exception guzzle
1个回答
0
投票

您的想法(总是从方法中返回Response对象)在设计上不起作用。我的意思是您已经看到了,在某些情况下没有Response对象(例如,当无法建立与主机的连接时,因此HTTP流甚至不在这种情况下开始,这就是为什么您不这样做的原因)具有任何HTTP状态代码)。

IMO是使您的代码了解异常的最佳方法。不要尝试在makeRequest()内部处理它,而要使其进一步流动,直到可以实际处理它为止。

© www.soinside.com 2019 - 2024. All rights reserved.