Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich unbehandelte Ausnahmen bei der Verwendung von Guzzle vermeiden?

Wie kann ich unbehandelte Ausnahmen bei der Verwendung von Guzzle vermeiden?

DDD
DDDOriginal
2024-11-02 08:25:02520Durchsuche

How Can I Avoid Unhandled Exceptions When Using Guzzle?

Unbehandelte Ausnahmen mit Guzzle vermeiden

Beim Testen von APIs ist es wichtig, HTTP-Fehler zu behandeln, um zu verhindern, dass Ausnahmen die Ausführung stoppen. Guzzle bietet Möglichkeiten, diese Ausnahmen abzufangen, aber manchmal stößt Ihr Code dennoch auf nicht behandelte Ausnahmen.

Das Problem, mit dem Sie konfrontiert sind, kann durch Deaktivieren von Ausnahmen für Guzzle gelöst werden. Dadurch können Sie die Statuscodes manuell bearbeiten, ohne dass Ausnahmen dazwischenkommen. So erreichen Sie dies:

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]);

Sobald Ausnahmen deaktiviert sind, können Sie den HTTP-Statuscode aus der Antwort abrufen:

$request = $client->get($uri);
$response = $request->send();
$statuscode = $response->getStatusCode();

Sie können dann verschiedene Statuscodes entsprechend behandeln:

if ($statuscode > 300) {
  // Do some error handling
}

Oder behandeln Sie bestimmte erwartete Codes:

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...");
}

Durch das Deaktivieren von Ausnahmen und das manuelle Bearbeiten von Statuscodes haben Sie die volle Kontrolle über die Fehlerbehandlung und können Unterbrechungen bei Ihrer Testausführung verhindern.

Das obige ist der detaillierte Inhalt vonWie kann ich unbehandelte Ausnahmen bei der Verwendung von Guzzle vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn