Rumah  >  Soal Jawab  >  teks badan

Menangkap pengecualian Guzzle

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粉511749537P粉511749537361 hari yang lalu1133

membalas semua(12)saya akan balas

  • P粉598140294

    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.

    balas
    0
  • 尊渡假赌尊渡假赌尊渡假赌

    尊渡假赌尊渡假赌尊渡假赌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.

    balas
    0
  • Batalbalas