我正试图为我的laravel应用程序创建一个订阅方法,该应用程序使用mailchimp为用户订阅给定的列表。当电子邮件地址尚未在lsit上时,该方法可以正常工作。当它已经订阅时,mailchimp将引发以下错误
Mailchimp_List_AlreadySubscribed blah@blah.co已经订阅了列表Test。单击此处更新您的配置文件。
,并显示以下代码
public function castError($result) {
if($result['status'] !== 'error' || !$result['name']) throw new Mailchimp_Error('We received an unexpected error: ' . json_encode($result));
$class = (isset(self::$error_map[$result['name']])) ? self::$error_map[$result['name']] : 'Mailchimp_Error';
return new $class($result['error'], $result['code']);
}我尝试了一个try catch块来捕获错误,但是它仍然被返回到浏览器,下面是我尝试过的,如果它说我也尝试了异常的MailChimp_Error。
public function subscribe($id, $email, $merge_vars)
{
try {
$this->mailchimp->lists->subscribe($id, $email, $merge_vars);
} catch (MailChimp_Error $e) {
$response = 'an error has occured';
}
return $response;
}最终,我希望能够运行该方法,然后向用户返回一条成功消息或一条描述问题的消息。3种可能的mailchimp方法错误是Email_notexists、list_alreadysubscribed和list不存在,尽管不应该出现最后一个错误,因为我在源代码中提供列表。
编辑1;在与mailchimp支持联系后,他们建议编写这段代码,但错误仍然被完整地返回给浏览器
try {
$results = $this->mailchimp->lists->subscribe($id, $email, $merge_vars);
} catch (Mailchimp_Error $e) {
if ($e->getMessage()) {
$error = 'Code:'.$e->getCode().': '.$e->getMessage();
}
}
echo $error;发布于 2014-03-17 15:14:22
订阅位于名称空间中,Acme\Emails\Subscribe so catch(Mailchimp_Error $e)在此命名空间中查找Mailchimp_Error。
将其更改为catch(\Mailchimp_Error $e)使其在根命名空间中查看,然后按预期工作。
https://stackoverflow.com/questions/22390080
复制相似问题