Pourquoi mes exceptions Guzzle ne sont-elles toujours pas gérées même avec un bloc try/catch ?

Barbara Streisand
Libérer: 2024-11-01 00:46:02
original
325 Les gens l'ont consulté

Why Are My Guzzle Exceptions Still Unhandled Even With a try/catch Block?

Gestion des exceptions Guzzle

Dans votre tentative d'intercepter les exceptions lancées par Guzzle lors des tests de l'API, vous avez rencontré des erreurs d'exception persistantes non gérées malgré la mise en œuvre un bloc try/catch. Examinons votre requête et explorons quelques solutions pratiques.

Dans l'extrait de code que vous avez fourni, vous avez inclus des écouteurs d'événements pour gérer les codes de réponse HTTP spécifiques (401, 500, etc.). Cependant, les types d'exceptions que vous interceptez dans le bloc try/catch (ClientErrorResponseException, ServerErrorResponseException, BadResponseException) ne sont pas suffisamment spécifiques pour encapsuler toutes les exceptions possibles qui pourraient être levées par Guzzle.

Pour résoudre ce problème, un L'approche consiste à désactiver les exceptions pour Guzzle, vous permettant d'accéder à tous les codes d'état sans déclencher d'exceptions. Ceci peut être réalisé en ajoutant la configuration suivante à votre client :

$client = new \Guzzle\Http\Client($httpBase, array(
  'request.options' => array(
     'exceptions' => false,
   )
));
Copier après la connexion

Les exceptions étant désactivées, vous pouvez vérifier manuellement le code d'état de la réponse et gérer tout code inattendu ou erroné :

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

if ($statuscode > 300) {
  // Handle error conditions
}
Copier après la connexion

Vous pouvez également définir explicitement les codes d'état attendus et les gérer en conséquence :

if (200 === $statuscode) {
  // Handle 200 OK
}
elseif (304 === $statuscode) {
  // Handle 304 Not Modified
}
elseif (404 === $statuscode) {
  // Handle 404 Not Found
}
else {
  throw new Exception("Invalid response from API...");
}
Copier après la connexion

En désactivant les exceptions et en gérant manuellement les codes d'état, vous obtenez un contrôle granulaire sur la gestion des erreurs et pouvez répondre de manière appropriée aux différents HTTP réponses.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!