Error 500 a neodchycená výjímka

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
knyttl
Člen | 196
+
0
-

Ahoj,

v bootstrapu mám normálně:

<?php
$application->errorPresenter = 'Error';
$application->catchExceptions = true;
?>

Mám vlastní router, ve kterém když vyhodím BadRequestException, tak je pravděpodobně normálně odchycena a zpracována, protože je následně vyhozena: Nette\Application\ApplicationException with message ‚An error occurred while executing error-presenter‘.

Ta ale produkčním módu odchycená není a i když celý bootstrap zabalím do try/catch, tak vše končí s Error 500. V logu z toho nic nemám, kde je pouze FATAL ERROR z neodchycené výjimky bez jakékoliv Stack trace. Vím, že je problém někde v BasePresenteru, ze kterého ErrorPresenter dědím, ale bez Stack trace nemám šanci zjistit, kde problém je.

Lze nějak tu Stack trace získat?

Děkuju.

Editoval knyttl (28. 7. 2011 9:40)

wopice
Člen | 21
+
0
-

Ta ApplicationException rozhodně neznamená, že byla BadRequestException zpracována. Nette ji vyhazuje, pokud došlo ke stejné chybě i při vykonávání ErrorPresenteru. Tvrdíte, že jste si napsal vlastní router, proto bych rozhodně začal pátrat u něj. Zkuste ho dočasně nahradit SimpleRouterem, BadRequestException vyhazujte až v presenteru a pokud ani to nezabere, nezbyde než poodhalit zde na fóru více z vašeho kódu.

Editoval wopice (28. 7. 2011 10:16)

knyttl
Člen | 196
+
0
-

Ta výjímka je z něho vyhozena, pokud si v místě jejího vyhození dám nějaké debug hlášení a exit(); vše proběhne v pořádku. Jak říkám – problém je v BasePresenteru, ze kterého dědím. Jen se nedokážu dostat ke StackTrace, kde se chyba nachází.

wopice
Člen | 21
+
0
-

Krokujte.

uestla
Backer | 799
+
0
-
Nette\Diagnostics\Debugger::$strictMode = TRUE;