मैं परीक्षण के एक सेट से अपवादों को पकड़ने की कोशिश कर रहा हूं, मैं एक एपीआई पर चल रहा हूं जिसे मैं विकसित कर रहा हूं और मैं एपीआई विधियों का उपभोग करने के लिए गुझेल का उपयोग कर रहा हूं। मुझे परीक्षण एक कोशिश / पकड़ ब्लॉक में लिपटे हुए हैं लेकिन यह अभी भी बिना किसी अपवाद वाली त्रुटियों को फेंक रहा है। एक इवेंट श्रोता को उनके डॉक्स में वर्णित के रूप में जोड़ना कुछ भी नहीं लगता है। मुझे उन प्रतिक्रियाओं को पुनः प्राप्त करने में सक्षम होना चाहिए जिनके 500, 401, 400 के HTTP कोड हैं, वास्तव में कुछ भी नहीं है जो कि 200 नहीं है क्योंकि सिस्टम कॉल के परिणाम के आधार पर सबसे उपयुक्त कोड सेट करेगा यदि यह काम नहीं करता है ।
वर्तमान कोड उदाहरण
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;
}
यहां तक कि फेंके गए अपवाद प्रकार के लिए विशिष्ट कैच ब्लॉक के साथ मैं अभी भी वापस आ रहा हूं
Fatal error: Uncaught exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response [status code] 401 [reason phrase] Unauthorized [url]
और जैसा कि आप उम्मीद करेंगे पेज पर सभी निष्पादन बंद हो जाता है। BadResponseException कैच के अलावा ने मुझे 404s सही से पकड़ने की अनुमति दी, लेकिन यह 500 या 401 प्रतिक्रियाओं के लिए काम नहीं करता है। क्या कोई सुझाव दे सकता है कि मैं कहां गलत हूं।
use
अपवाद नहीं हैं, आपको एफक्यू क्लास को स्पष्ट रूप से बताने के लिए उन्हें `` के साथ उपसर्ग करने की आवश्यकता हो सकती है। इसलिए, उदाहरण के लिए, '\ Guzzle \ Http \ Exception \ ClientErrorResponseException'