为什么我的异常不被catch捕获?

Hub*_*bro 19 php exception

我有一些看起来像这样的代码

# Try to import file
try
{
    DataManager::fileImport($_FILES['datafile']['tmp_name'], 
                            $_POST['zones'], $_POST['statuses']);
}
catch(Exception $e)
{
    print 'Herp.';
    $response->body = Helpers::getVarDump($e);
}
Run Code Online (Sandbox Code Playgroud)

DataManager::fileImport 字面上是一个单行函数,抛出一个正常的异常:

static function fileImport($filepath, $zones, $statuses)
{
    throw new Exception('SOME EXCEPTION');
}
Run Code Online (Sandbox Code Playgroud)

然而我明白了

致命错误:未捕获异常'Exception',消息'SOME EXCEPTION'...

从try块.也是'赫普.' 永远不会打印.为什么Exception不会触发catch块?


编辑:我应该提到我正在使用Tonic和PHP 5.3.9

再次编辑:这是DataManager(名称替换为...匿名)http://pastebin.com/daHWBJDC

Hub*_*bro 46

我忽略了use \Exception;在包含try/catch的文件中指定.

思考

我知道PHP中的每个命名空间都应该有很多原因来定义它自己的Exception,但我仍然觉得奇怪的是,在没有定义该上下文catch(Exception e)时没有引起任何错误Exception.如果我写,new Exception()我会得到一个错误.

哦,好吧,至少我学到了一些东西.

  • 唷!谢谢你回答自己的问题.没有发现这将是一个痛苦. (2认同)