Während die oben genannten Antworten gut sind, werden sie nicht mit Netzwerkfehler umgehen, wie Mark erwähnt BadResponseException für ClientException und Serverexception nur eine Superklasse ist. Aber RequestException ist auch eine Super-Klasse von BadRequestException. Dies wird nicht nur 400 und 500 Fehler sondern auch Netzwerkfehler abfangen. Nehmen wir an, Sie fordern die unten stehende Seite an, aber Ihr Netzwerk spielt auf und Ihr Catch erwartet eine BadResponseException. Nun, Ihre Anwendung wird einen Fehler auslösen.
In diesem Fall ist es besser, RequestException zu erwarten und nach einer Antwort zu suchen.
try {
$client->get('http://123123123.com')
} catch (RequestException $e) {
// If there are network errors, we need to ensure the application doesn't crash.
// if $e->hasResponse is not null we can attempt to get the message
// Otherwise, we'll just pass a network unavailable message.
if ($e->hasResponse()) {
$exception = (string) $e->getResponse()->getBody();
$exception = json_decode($exception);
return new JsonResponse($exception, $e->getCode());
} else {
return new JsonResponse($e->getMessage(), 503);
}
}
wird diese Frage auf diese Frage im Zusammenhang http://stackoverflow.com/questions/17658283/catching-exceptions-from-guzzle/28416973#28416973 und die Antworten könnte es eine Hilfe sein, auch. – Trendfischer