不从父构造函数冒泡的异常

时间:2014-09-04 15:15:32

标签: php

我的异常似乎没有从父构造函数中冒出来。

这是一个简化版本:

class importer {

    public function __construct() 
    {
        $this->getFile(); // fills out $file with name or false on failure

        if (!$this->file) {
            throw new Exception("Sorry no file, so no can do!");
        }
    }

}

class childImporter extends importer {

    pubclic function __construct()
    {
        parent::__construct();
    }

}

try {

    new childImporter();

    nextFunction();

} catch (Exception $e) {

    echo $e->getMessage();

}
永远不会调用

nextFunction,并且catch块也不会被运行,整个事件抛出一个未捕获的异常错误并停止。

我认为异常应该冒出来了?

或者上面的代码是否可以工作而其他东西出错?

1 个答案:

答案 0 :(得分:1)

因此,对于其他有类似问题的人来说,正如cbuckley指出的那样,问题就是命名空间问题。

我将Exception的两次出现都更改为\Exception,这很好地抓住了它。

我的ide中没有得到任何其他命名空间错误,因为PHPStorm非常好地自动导入了Symfony\Component\Config\Definition\Exception\Exception的异常类,谁知道在哪里(因为我没有在其他任何地方使用任何Symfony组件!)。

希望这能帮助那些也度过漫长一天的人!