[英]Uncaught exception in try/catch block
一种方法对yaml文件执行递归扫描并解析它们,提取一些信息。 我使用sfYamlParser解析Yaml。 我将对parse()的调用包含在try块中,并捕获了“ Exception $ e”,但仍然收到“致命错误:未捕获的异常”。
try{
$definition = $parser->parse(file_get_contents($filePath));//line 20
} catch(Exception $e) {
throw new Exception("Parsing model definiion '$filePath' failed.", 0, $e);
}
堆栈跟踪的摘录:
...Indexer.php(20): sfYamlParser->parse('type: com...') #3
为什么异常没有被我的catch块捕获? 我确实希望异常冒出来,然后陷入我的方法中。 coe被命名为名称空间,但是设置了“ use Exception”。
错误消息:
Fatal error</b>: Uncaught exception 'InvalidArgumentException' with message 'Unable to parse line 30 (key; true).' in [...]/packages/fabpot-yaml/sfYamlParser.php:265
Stack trace:
#0 [...]/packages/fabpot-yaml/sfYamlParser.php(201): sfYamlParser->parse('type: s...')
#1 [...]/packages/fabpot-yaml/sfYamlParser.php(201): sfYamlParser->parse('explicitPrivile...')
#2 [...]/packages/hydra/source/com/daliaIT/hydra/Indexer.php(20): sfYamlParser->parse('type: com...')
#3 [...]/packages/co3/source/com/daliaIT/co3/PathHelper.php(97): com\daliaIT\hydra\{closure}('packages/hPacks...')
#4 [...]/packages/hydra/source/com/daliaIT/hydra/Indexer.php(28): com\daliaIT\co3\PathHelper->scanCallback('packages/hPacks...', 'hmd', Object(Closure))
编辑:
好吧,如果我不引发其他异常,则不会出现致命错误。 抱歉,我希望代码崩溃时出现我定义的错误消息,而不是原始异常信息,因此:
为什么它不会失败并显示“解析模型定义'$ filePath'失败”。
编辑:
事实证明,PHP具有一种处理未捕获异常的迭代方法:
如果抛出“ new Exception(“ MESSAGE”,0,$ previous_exception)“并且没有捕获,PHP将显示$ previous_exception的错误消息,而不是” MESSAGE“
可能是因为您没有捕获在catch块中引发的异常。
您必须停止在catch块中再次引发异常,或者在调用方法中尝试新的catch /。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.