Rumah > Soal Jawab > teks badan
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.
P粉5981402942023-11-17 13:38:05
Sebarang kandungan yang tidak ditangkap harus ditangkap jika berada di dalamnya try
块中抛出异常,那么在最坏的情况下,Exception
.
Pertimbangkan bahagian pertama ujian adalah membuang pengecualian dan membungkusnya dalam blok try
.
尊渡假赌尊渡假赌尊渡假赌2023-11-17 16:05:11
Ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. Ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya. , ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya , ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya, ya.