Исключить исключение в блоке try / catch

Метод выполняет рекурсивное сканирование файлов 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? Я ожидал, что 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-&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)) 

РЕДАКТИРОВАТЬ:

Хорошо, если я не создаю другого исключения, я не получаю фатальной ошибки. Извините, я ожидал, что код сработает с сообщением об ошибке, которое я определил, а не с оригинальной мессенджей исключения, поэтому:

почему он не сработает с «Определение модели Parsing» $ filePath «не удалось»??

РЕДАКТИРОВАТЬ:

Оказывается, PHP имеет истребительный способ справиться с неперехваченными исключениями:

Если вы выбросите «новое исключение» («MESSAGE», 0, $ previous_exception) и не поймаете его, PHP отобразит сообщение об ошибке из $ previous_exception и NOT «MESSAGE»,

Вероятно, потому что вы не поймаете исключение, которое вы выбрали в блоке catch.

Вы должны либо перестать бросать исключение в блок catch, либо сделать новую попытку поймать / в вызывающем методе.