如何防止在调用PHP函数时显示错误

时间:2012-11-22 19:25:48

标签: php function error-handling

我正在开发一个WordPress插件,它会返回特定Forrest用户的关注者数量。

如果与API服务器通信时出现错误或任何其他问题,希望该函数正常返回0。

这是功能:

/**
 * Get Forrst followers.
 *
 * @param string $forrstID The username of the Forrst member
 * @return int. Number of Forrst Followers
 */
function ass_get_forrst($forrstID) {
    $json = wp_remote_get("http://forrst.com/api/v2/users/info?username=".$forrstID);

    if(is_wp_error($json))
        return false;

    $forrstData = json_decode($json['body'], true);

    return intval($forrstData['resp']['followers']);
} 

如果出现错误,我在函数中有一个块返回false,但似乎必须跳过此部分,因为有时我仍然会遇到“致命错误”IE超出最大执行时间。

如果出现错误,是否有更好的方法可以重写此函数以返回“0”。也许一个Try / Catch块?

我是否在函数的错误部分有if(is_wp_error($json)) return false;

2 个答案:

答案 0 :(得分:1)

注册关机功能:

function returnzero() {
        $error = error_get_last();
        if($error &&  ['type'] == E_ERROR){
            echo 0;
        }
    }
register_shutdown_function('returnzero');

请注意,您可能希望使用以下内容关闭此页面上的错误报告:

error_reporting(E_ALL & ~ E_ERROR);

答案 1 :(得分:1)

我不知道wordpress模型,但听起来像你正在使用的两个函数中的一个是抛出异常。在这种情况下,只有Try / Catch块可以根据需要顺利返回cero

if(is_wp_error($json))检查的内容(我猜)是由wordpress先前检测到的一些“已知”错误。

你使用“通用”try / catch块运行:

function ass_get_forrst($forrstID) {
    try {
        $json = wp_remote_get("http://forrst.com/api/v2/users/info?username=".$forrstID);

        if(is_wp_error($json))
            return false;

        $forrstData = json_decode($json['body'], true);

        return intval($forrstData['resp']['followers']);
    } catch (Exception $e) {
            return false;      // as above

    }
}