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 中国語 Web サイトの他の関連記事を参照してください。