捕获 Guzzle 异常和 return 字符串

Catch Guzzle Exception and return string

所以我需要一些帮助来构建我的一种使用 ID 检索 Twitter 列表的方法。下面,我将描述并详细介绍它的内容 returning.

代码:

    public static function get_list($list_id)
    {
        $lists = self::get_lists();
        $params = [
            'list.fields' => 'created_at,follower_count,member_count,private,description,owner_id',
            'user.fields' => 'created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,withheld'
        ];
        try {
            $list = $lists->get($list_id, $params);
        } catch (\GuzzleHttp\Exception\ClientException $e) {
            return $e;
        }

        return $list;
    }

$lists->get() 出现问题时,它会抛出以下项目 object(GuzzleHttp\Exception\ClientException)#1640 (10) { ["request":"GuzzleHttp\Exception\RequestException":private]=> 错误。

我想达到的目标:
Return $e 以便我可以读取错误(无法使其正常工作)。

如果我将 return $e 换成 return 'Hello',我仍然看到对象而不是字符串。

IDE 表示 @throws GuzzleException.

有没有人看出我处理异常的方式有什么问题,以及为什么我无法正确 return 异常错误?

尝试使用异常层次结构来捕获任何异常。 ClientException 只捕获 400x-499 之间的状态码。要捕获其他异常或在同一异常中捕获,您可以使用 RequestException.

public static function get_list($list_id)
    {
        $lists = self::get_lists();
        $params = [
            'list.fields' => 'created_at,follower_count,member_count,private,description,owner_id',
            'user.fields' => 'created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,withheld'
        ];
        try {
            $list = $lists->get($list_id, $params);
            if($list->getStatusCode() == 200)){
                $return_list = json_decode($list->getBody(),true);
            }
        } catch (\GuzzleHttp\Exception\ClientException $e) {
            $error['error'] = $e->getMessage();
            $error['request'] = $e->getRequest();
            if($e->hasResponse()){
              // you can pass a specific status code to catch a particular error here I have catched 400 Bad Request. 
              if ($e->getResponse()->getStatusCode() == '400'){
                 $error['response'] = $e->getResponse(); 
              }
            }
            return $error;
        } catch(\GuzzleHttp\Exception\RequestException $se){
            $error['error'] = $e->getMessage();
            $error['request'] = $e->getRequest();
            return $error;
        } catch(Exception $e){
           //other errors 
        }

        return $list;
    }