You can easily handle client errors in
Guzzle
by catching the thrown
exceptions
. You can either catch the RequestException and it should cover most of the exceptions or you can catch the more specific ClientException which covers only the client exceptions such as 4xx status codes.
Here is an example of some code that results in a 404 Not Found exception that is handled by catching ClientException in Guzzle:
use GuzzleHttpClient;
use GuzzleHttpExceptionClientException;
$client = new Client();
try {
$response = $client->get('https://httpbin.org/status/404');
// Process response normally...
} catch (ClientException $e) {
// An exception was raised but there is an HTTP response body
// with the exception (in case of 404 and similar errors)
$response = $e->getResponse();
$responseBodyAsString = $response->getBody()->getContents();
echo $response->getStatusCode() . PHP_EOL;
echo $responseBodyAsString;
}
// Output:
// 404
You can read more about various exceptions thrown by Guzzle in the
official docs
.