首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP错误信息帮助并尝试/捕获

PHP错误信息帮助并尝试/捕获
EN

Stack Overflow用户
提问于 2011-08-31 13:49:53
回答 1查看 730关注 0票数 0

我正在尝试创建一个函数来删除用户与常量联系人的联系。这个函数调用一个包装类来保持常量的联系,并且它可以工作,但是如果你给它一个不存在于他们网站上的电子邮件地址,它会返回一个可捕捉的致命错误。

我是第一次尝试/捕捉,而且我还不太清楚该把它放在哪里,这样我就可以创建一个优美的错误消息,而不是我正在得到的可捕捉的致命错误。下面是我的当前代码:

代码语言:javascript
复制
function ccdeleteuser($emailaddress)
{
//this code accesses the constant contact wrapper class to delete a user based on email
$ConstantContact = new ConstantContact("basic", "apikey", "usr", "pwd");
$SearchContact = $ConstantContact->searchContactsByEmail($emailaddress);
$DeleteContact = $ConstantContact->deleteContact($SearchContact[0]);  
}

$emailtotry = "test@test.com";  //this is email is NOT in Constant Contact
ccdeleteuser($emailtotry);

现在,如果我运行这个,我会得到以下错误:

传递给ConstantContact::

Contact ()的参数1必须是联系人的实例,空给定,在第19行的路径中调用,并在第214行中定义为常量联系人包装文件

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-31 13:56:59

正确的方法是首先测试null:

代码语言:javascript
复制
function ccdeleteuser($emailaddress)
{

    $ConstantContact = new ConstantContact("basic", "apikey", "usr", "pwd");
    $SearchContact = $ConstantContact->searchContactsByEmail($emailaddress);
    // first makes sure that the 0 index of of SearchContact is accessible at all
    // then it ensures that only something "truthy" will trigger delete -- this
    // means that if $SearchContact[0] is null, the function won't try to delete
    if( $SearchContact && isset( $SearchContact[0] ) && $SearchContact[0])
        $DeleteContact = $ConstantContact->deleteContact($SearchContact[0]);  
    else
        echo "Can't do nothin'"; // do something useful?
}

试着..。抓住,你可能会让它看起来像这样:

代码语言:javascript
复制
function ccdeleteuser($emailaddress)
{

    $ConstantContact = new ConstantContact("basic", "apikey", "usr", "pwd");
    $SearchContact = $ConstantContact->searchContactsByEmail($emailaddress);
    try
    {
        // keep this... it is still useful
        if( $SearchContact && isset( $SearchContact[0] ) && $SearchContact[0])
            $DeleteContact = $ConstantContact->deleteContact($SearchContact[0]);  
        else
            echo "Can't do nothin'";
    }
    catch( Exception $e )
    {
        // I'm making up a function "log" which will record that an error 
        // has taken place. It is a good idea to always log all exceptions
        // so that you don't accidentally obfuscate something important
        log( $e->getMessage() );
        // do something useful
    }
}

一般说来,最好是主动采取行动,防止出现例外情况,而不是简单地在事后抓住它们。我甚至要说,你应该把尽你所能的一切都当作一条规则,以防止出现异常的可能性,并且只使用.作为最后一种可能的手段来抓。

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

https://stackoverflow.com/questions/7257908

复制
相关文章

相似问题

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