捕获Guzzle的异常
P粉511749537
P粉511749537 2023-11-16 14:36:03
[PHP讨论组]

我正在尝试捕获在我正在开发的 API 上运行的一组测试中的异常,并且我正在使用 Guzzle 来使用 API 方法。我已经将测试包装在 try/catch 块中,但它仍然抛出未处理的异常错误。按照他们的文档中的描述添加事件监 听器似乎没有做任何事情。我需要能够检索 HTTP 代码为 500、401、400 的响应,实际上任何不是 200 的响应,因为如果不起作用,系统将根据调用结果设置最合适的代码.

当前代码示例

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;

    }

即使使用抛出异常类型的特定 catch 块,我仍然会返回

Fatal error: Uncaught exception 'GuzzleHttpExceptionClientErrorResponseException' with message 'Client error response [status code] 401 [reason phrase] Unauthorized [url]

如您所料,页面上的所有执行都会停止。添加 BadResponseException 捕获允许我正确捕获 404,但这似乎不适用于 500 或 401 响应。谁能建议我哪里出错了。

P粉511749537
P粉511749537

全部回复(11)
尊渡假赌尊渡假赌尊渡假赌

三大改造***工资电饭锅三大改造***工资电饭锅三大改造***工资电饭锅三大改造***工资电饭锅三大改造***工资电饭锅三大改造***工资电饭锅

尊渡假赌尊渡假赌尊渡假赌

阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀

尊渡假赌尊渡假赌尊渡假赌

阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀阿帆VS啊打工仔手动蝶阀

尊渡假赌尊渡假赌尊渡假赌

艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅

尊渡假赌尊渡假赌尊渡假赌

艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅

尊渡假赌尊渡假赌尊渡假赌

艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅

尊渡假赌尊渡假赌尊渡假赌

艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅艾师傅

尊渡假赌尊渡假赌尊渡假赌

阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是

尊渡假赌尊渡假赌尊渡假赌

阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是阿是

P粉598140294

如果在该 try 块中抛出异常,那么在最坏的情况下,Exception 应该捕获任何未捕获的内容。

考虑测试的第一部分是抛出异常并将其包装在 try 块中。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号