【发布时间】:2012-02-24 05:21:07
【问题描述】:
我有一些看起来像这样的代码
# 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);
}
DataManager::fileImport 字面意思是一个抛出正常异常的单行函数:
static function fileImport($filepath, $zones, $statuses)
{
throw new Exception('SOME EXCEPTION');
}
但我得到了
致命错误:未捕获的异常 'Exception' 带有消息 'SOME EXCEPTION'...
来自 try 块。还有“疱疹”。从不打印。为什么 Exception 不触发 catch 块?
编辑:我应该提到我正在使用Tonic 和 PHP 5.3.9
再次编辑:这是 DataManager(为了匿名,名称替换为 ...)http://pastebin.com/daHWBJDC
【问题讨论】:
-
它应该可以工作。您是否可能没有显示实际代码,并抛出一些不扩展
Exception的RandomLyNamedException? -
这看起来是正确的。您确定这是您调用此 fileImport 方法的唯一地方吗?如果还有其他人,我会确保他们也被抓到。
-
如果使用 5.3+,你检查过你的命名空间吗?
-
我刚刚创建了类,这是调用函数的唯一地方。我还检查了堆栈跟踪中的行号
-
这是 DataManager 类 pastebin.com/daHWBJDC(为了匿名,有些名称被替换为 ...)