首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获mailchimp错误

捕获mailchimp错误
EN

Stack Overflow用户
提问于 2014-03-13 20:24:06
回答 1查看 3.9K关注 0票数 1

我正试图为我的laravel应用程序创建一个订阅方法,该应用程序使用mailchimp为用户订阅给定的列表。当电子邮件地址尚未在lsit上时,该方法可以正常工作。当它已经订阅时,mailchimp将引发以下错误

Mailchimp_List_AlreadySubscribed blah@blah.co已经订阅了列表Test。单击此处更新您的配置文件。

,并显示以下代码

代码语言:javascript
运行
复制
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。

代码语言:javascript
运行
复制
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支持联系后,他们建议编写这段代码,但错误仍然被完整地返回给浏览器

代码语言:javascript
运行
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-17 15:14:22

订阅位于名称空间中,Acme\Emails\Subscribe so catch(Mailchimp_Error $e)在此命名空间中查找Mailchimp_Error

将其更改为catch(\Mailchimp_Error $e)使其在根命名空间中查看,然后按预期工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22390080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档