Jak ověřit Latte syntax, zachytit všechny chyby před include

- ludek
 - Člen | 83
 
Zdravím, potřeboval bych před vložením Latte šablony ověřit, jestli
je správně napsaná,
abych v případě syntaktické chyby zabránil zobrazení
500 Server Error (ParseError, syntax error na DEV stroji).
Šablona
{if $syntaxOK}
    {include $page} {* << $page je .latte soubor, jestli má vadnou syntax, nenačítat a zobrazit chybu *}
{else}
	CHYBA!
{/if}
Napadlo mě jen zkusit to předem zkompilovat:
Presenter:
	$page = $this->context->parameters['wwwDir'].'/pages/page1.latte';
	$this->template->syntaxOK = TRUE;
	    $latte = new \Latte\Engine;
	    try {
			$test = $latte->compile($page); //< jde to zkompilovat?
	    } catch (\Exception $e) {
			$this->flashMessage('<strong>CHYBA:</strong> (' . $e->getMessage() . ').', 'danger');
			$this->template->syntaxOK = FALSE;
	    }
funguje to, ALE některé chyby zachytím, některé ne. Např.
{<něco> vyhodí výjimku
"Malformed macro"
{<něco>} projde a skončí to až na {include}
"syntax error, unexpected '<'", to znamená 500 Server
Error.
→ source
file: echo LR\Filters::escapeHtmlText(<'něco'>)
To druhé prostě projde přes compile() a spadne to až na
{include $page} při renderování šablony.
Můžete mi prosím poradit, jak zachytit všechny chyby v Latte šabloně dřív než bude includovaná?
EDIT: použité verze: PHP 7.3.6,
nette/application v3.0.0, latte/latte v2.5.1
Díky.
Editoval ludek (27. 9. 2019 13:17)

- ludek
 - Člen | 83
 
Možné řešení:
Spadne to na render metodě. Takže jednou se zachytává
výjimka a jednou ParseError.
$page = $this->context->parameters['wwwDir'].'/pages/page1.latte';
$latte = new \Latte\Engine;
$syntaxOK = TRUE;
try {
    $test = $latte->compile($page); // jde to zkompilovat?
} catch (\Exception $e) {
    $this->flashMessage('<strong>CHYBA:</strong> (' . $e->getMessage() . ').', 'danger');
    $syntaxOK = FALSE;
}
if ($syntaxOK) {
	try {
	    $test = $latte->renderToString($page); // jde to vyrenderovat?
	} catch (\ParseError $e) {
	    $this->flashMessage('<strong>CHYBA:</strong> (' . $e->getMessage() . ').', 'danger');
	    $syntaxOK = FALSE;
	}
}
$this->template->syntaxOK = $syntaxOK;