捕获 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;
}
所以我需要一些帮助来构建我的一种使用 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;
}