php - 父类中抛出的异常未在子类中捕获

标签 php exception namespaces php-5.3

使用 Facebook PHP SDK 时会发生此错误,但实际上我认为这是一个一般性错误。

当我运行这段代码时,一切正常,异常被捕获:

$facebook = new Facebook('appId'=>APP_ID,'secret'=>APP_SECRET);
try {
    $user_profile = $facebook->api('/me','GET');
    echo "Name: " . $user_profile['name'];
} catch(FacebookApiException $e) {
    $login_url = $facebook->getLoginUrl(); 
    echo 'Please <a href="' . $login_url . '">login.</a>';
}

但是当我运行这段代码时:

$facebook = new Facebook_Extended('appId'=>APP_ID,'secret'=>APP_SECRET);
$facebook->api_extended();

扩展类的方法如下所示:

// Overrides parent::api()
public function api() {
    try {
        $user_profile = parent::api('/me','GET');
        echo "Name: " . $user_profile['name'];
    } catch(FacebookApiException $e) {
        $login_url = $this->getLoginUrl(); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
    } 
}

我收到“未捕获的 OAuthException”错误。

为什么无法在子类中捕获异常?有什么想法吗?

最佳答案

我没有意识到这是一个问题,但是这个类在命名空间中,所以我需要在我的异常中添加一个“\”:

catch (\FacebookApiException $e)

http://onehackoranother.com/logfile/2009/01/php-5-3-exception-gotcha

关于php - 父类中抛出的异常未在子类中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848208/

相关文章:

java - 异常消息为空?

zend-framework - 如何在 Zend Framework 中使用命名空间?

php - 获取订单项 woocommerce 订单

php - 包含功能

php - 在每个 Controller 中处理相同的 try catch 结构

javascript - 将变量加载到异步 JS 中?

python - 如何从回调函数访问(和编辑)变量?

php - 使用正则表达式查找和替换注释 block 中的(部分)字符串

javascript - 转换为 Base64 后如何将 Canvas 图像插入数据库

c++ - 如果我删除 C++ 程序正在向其写入数据的文件,会发生什么情况?