2012-02-19 16 views
0

メソッドは、yamlファイルの再帰スキャンを実行し、それらを解析し、情報の一部を抽出します。私はyamlを解析するためにsfYamlParserを使用します。私は、tryブロックとキャッチ「例外の$ E」に()を解析するために呼び出しを囲んが、私はまだ、「致命的なエラーを取得:。キャッチされない例外を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 

?。なぜcatchブロックでキャッチされない例外はある 私はバブルアップに例外を期待していなかったし、その後、私の方法で漁獲さ COEは、名前空間されているが、「使用例外」が設定されている

エラーmesssage:。

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-&gt;parse('type:   s...') 
#1 [...]/packages/fabpot-yaml/sfYamlParser.php(201): sfYamlParser-&gt;parse('explicitPrivile...') 
#2 [...]/packages/hydra/source/com/daliaIT/hydra/Indexer.php(20): sfYamlParser-&gt;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-&gt;scanCallback('packages/hPacks...', 'hmd', Object(Closure)) 

EDIT:

[OK]を私は、私は致命的なエラーを取得していない別の例外をスローしない場合。申し訳ありませんが、元の例外メッセージではなく、定義したエラーメッセージでクラッシュすると思います。

EDIT:あなたは "新しい例外(" MESSAGE "0、$のprevious_exception)" を投げるとそうでない場合は

はPHPがキャッチされない例外に対処するiteresting方法を持っていると判明キャッチするPHPは$ previous_exceptionからのエラーメッセージを表示し、 "MESSAGE"以外のメッセージを表示します

+0

上記で指定したキャッチブロックにスローする例外をキャッチしますか? – thetaiko

+0

残りのスタックトレースはどのように見えますか? – thetaiko

+0

例外は "$ parser-> parse(...)"によってスローされます。上記の例外をcatchするtpをキャッチしたいが、catchブロックは決して実行されない。 –

答えて

2

おそらくcatchブロックに投げた例外を捕まえないからです。

catchブロックで例外をスローするのをやめたり、呼び出しメソッドの中で新しいtryキャッチを行う必要があります。

関連する問題