0
一种方法对yaml文件执行递归扫描并解析它们,提取一些信息。我使用sfYamlParser来解析yaml。从堆栈跟踪捕获的异常try/catch块中未捕获的异常
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
我包围的调用来解析()在try块和catch“异常$ E”,但我仍然得到一个“致命错误。 ?。为什么是例外而不是通过我的catch块捕获 我没有想到的异常冒泡,然后在我的方法捕获 的COE被命名空间,但“使用的例外”设置
错误讯息话题:
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有iteresting的方式来处理未捕获的异常:
如果你抛出一个 “新的异常(” 信息 “0,$ previous_exception)” 和不赶上它PHP将显示从$ previous_exception错误消息,而不是“MESSAGE”
你是否抓住了上面指定的catch块的异常? – thetaiko 2012-02-19 16:38:16
堆栈跟踪的其余部分是什么样的? – thetaiko 2012-02-19 16:42:52
“$ parser-> parse(...)”引发了异常“我想tp捕获我上面抛出的异常,但catch块永远不会执行。 – 2012-02-19 16:43:17