Saya cuba menangkap pengecualian dalam set ujian yang dijalankan pada API yang saya bangunkan dan saya menggunakan Guzzle untuk menggunakan kaedah API. Saya telah membungkus ujian dalam blok cuba/tangkap tetapi ia masih menimbulkan ralat pengecualian yang tidak dikendalikan. Menambah pendengar acara seperti yang diterangkan dalam dokumentasi mereka nampaknya tidak melakukan apa-apa. Saya perlu dapat mendapatkan semula respons dengan kod HTTP 500, 401, 400, sebenarnya sebarang respons yang bukan 200, kerana jika itu tidak berfungsi, sistem akan menetapkan kod yang paling sesuai berdasarkan hasil panggilan.
Contoh kod semasa
foreach($tests as $test){ $client = new Client($api_url); $client->getEventDispatcher()->addLi stener('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 (GuzzleHttpExceptionClientErrorResponseException $e) { $req = $e->getRequest(); $resp =$e->getResponse(); displayTest($req,$resp); } catch (GuzzleHttpExceptionServerErrorResponseException $e) { $req = $e->getRequest(); $resp =$e->getResponse(); displayTest($req,$resp); } catch (GuzzleHttpExceptionBadResponseException $e) { $req = $e->getRequest(); $resp =$e->getResponse(); displayTest($req,$resp); } catch( Exception $e){ echo "AGH!"; } unset($client); $client=null; }
Walaupun dengan blok tangkapan tertentu yang melemparkan jenis pengecualian, saya masih mendapat pulangan
Fatal error: Uncaught exception 'GuzzleHttpExceptionClientErrorResponseException' with message 'Client error response [status code] 401 [reason phrase] Unauthorized [url]
Seperti yang anda jangkakan, semua pelaksanaan pada halaman terhenti. Menambah tangkapan BadResponseException membolehkan saya menangkap 404 dengan betul, tetapi ini nampaknya tidak berfungsi dengan 500 atau 401 respons. Bolehkah sesiapa mencadangkan di mana silap saya.
. Transformasi Utama Periuk*** Periuk Nasi Gaji
Afan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah rama-rama manual pertaruhan injap Ah Fan VS Ah injap rama-rama manual pertaruhan
Afan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan VS Ah injap rama-rama manual orang gaji Ah Fan Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah injap rama-rama manual pertaruhan Ah Fan VS Ah rama-rama manual pertaruhan injap Ah Fan VS Ah injap rama-rama manual pertaruhan
Cikgu Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai
Cikgu Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai
Cikgu Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai
Cikgu Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Tuan Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai, Cikgu Ai
Ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. Ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. , ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya , ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya.
Bergantung pada projek anda, anda mungkin perlu melumpuhkan pengecualian guzzle. Kadangkala peraturan pengekodan tidak membenarkan pengecualian kawalan aliran. Anda boleh lumpuhkan pengecualian untuk Guzzle 3 seperti berikut:
Ini tidak melumpuhkan pengecualian curl seperti tamat masa, tetapi kini anda boleh mendapatkan setiap kod status dengan mudah:
Untuk menyemak sama ada anda mendapat kod yang sah, anda boleh menggunakan sesuatu seperti ini:
...atau lebih baik lagi kendalikan semua kod yang dijangkakan:
Untuk Guzzle 5.3
Terima kasih @mika
Guzzle 6
Ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. Ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. , ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya , ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya.