D'intercepter les exceptions de Bouffer

Je suis en train d'essayer d'attraper les exceptions à partir d'un ensemble de tests, je suis en cours d'exécution sur une API je suis en développement et je suis en utilisant le Gave de consommer les méthodes de l'API. J'ai les tests enveloppé dans un bloc try/catch, mais il est encore de jeter exception non gérée erreurs. Ajouter un écouteur d'événements tels que décrits dans les docs ne semble pas faire quoi que ce soit. J'ai besoin d'être en mesure de récupérer les réponses qui ont HTTP codes de 500, 401, 400, en fait tout ce qui n'est pas 200 comme le système va le plus approprié code basé sur le résultat de l'appel, si cela ne fonctionne pas.

Actuel exemple de code

foreach($tests as $test){

        $client = new Client($api_url);
        $client->getEventDispatcher()->addListener('request.error', function(Event $event) {        

            if ($event['response']->getStatusCode() == 401) {
                $newResponse = new Response($event['response']->getStatusCode());
                $event['response'] = $newResponse;
                $event->stopPropagation();
            }            
        });

        try {

            $client->setDefaultOption('query', $query_string);
            $request = $client->get($api_version . $test['method'], array(), isset($test['query'])?$test['query']:array());


          //Do something with Guzzle.
            $response = $request->send();   
            displayTest($request, $response);
        }
        catch (Guzzle\Http\Exception\ClientErrorResponseException $e) {

            $req = $e->getRequest();
            $resp =$e->getResponse();
            displayTest($req,$resp);
        }
        catch (Guzzle\Http\Exception\ServerErrorResponseException $e) {

            $req = $e->getRequest();
            $resp =$e->getResponse();
            displayTest($req,$resp);
        }
        catch (Guzzle\Http\Exception\BadResponseException $e) {

            $req = $e->getRequest();
            $resp =$e->getResponse();
            displayTest($req,$resp);
        }
        catch( Exception $e){
            echo "AGH!";
        }

        unset($client);
        $client=null;

    }

Même avec le bloc catch pour la levée d'une exception de type je suis encore en train arrière

Fatal error: Uncaught exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response [status code] 401 [reason phrase] Unauthorized [url]

et tous sur l'exécution de la page s'arrête, comme vous le souhaitez. L'ajout de la BadResponseException catch m'a permis de rattraper une erreur 404 correctement, mais cela ne semble pas fonctionner pour les 500 ou les réponses 401. Quelqu'un peut-il suggérer l'endroit où je vais mal s'il vous plaît.

  • Est-ce code en vertu d'un espace de noms? Si donc, sauf si vous êtes useing les exceptions, vous pouvez avoir besoin de les préfixer avec ` explicitement état de la FQ Classe. Ainsi, par exemple, '\Bouffer\Http\Exception\ClientErrorResponseException'
InformationsquelleAutor Eric | 2013-07-15