使用 Guzzle 避免未处理的异常
测试 API 时,处理 HTTP 错误以防止异常停止执行至关重要。 Guzzle 提供了捕获这些异常的方法,但有时您的代码可能仍会遇到未处理的异常。
您所面临的问题可以通过禁用 Guzzle 的异常来解决。这允许您手动处理状态代码,而不会出现异常干扰。实现此目的的方法如下:
Guzzle 3
$client = new \Guzzle\Http\Client($httpBase, array( 'request.options' => array( 'exceptions' => false, ) ));
Guzzle 5.3
$client = new \GuzzleHttp\Client(['defaults' => [ 'exceptions' => false ]] );
Guzzle 6
$client = new \GuzzleHttp\Client(['http_errors' => false]);
一旦禁用异常,您可以从响应中检索 HTTP 状态代码:
$request = $client->get($uri); $response = $request->send(); $statuscode = $response->getStatusCode();
然后您可以相应地处理不同的状态代码:
if ($statuscode > 300) { // Do some error handling }
或处理特定的预期代码:
if (200 === $statuscode) { // Do something } elseif (304 === $statuscode) { // Nothing to do } elseif (404 === $statuscode) { // Clean up DB or something like this } else { throw new MyException("Invalid response from api..."); }
通过手动禁用异常和处理状态代码,您可以完全控制错误处理并防止测试执行中断。
以上是使用 Guzzle 时如何避免出现未处理的异常?的详细内容。更多信息请关注PHP中文网其他相关文章!