#1 2. 3. 2010 10:20
- medhi
- Člen

- Registrovaný: 31. 3. 2009
- Příspěvky: 66
Neodchytávají se výjimky
Ahoj, mám aplikaci na lokalu, kde Laděnka správně vyhazuje výjimky, když zadám třeba špatnou URL. Zapnu potom v boostrapu toto:
$application->errorPresenter = 'Error';
$application->catchExceptions = TRUE;
A aplikace od té doby už hází jenom ten strohý
Server Error
The server encountered an internal error and was unable to complete your request. Please try again later.
Nette Framework
Error presenter mám podle skeletonu.
Je to nějaká blbá chybka, protože vedle mám aplikaci, kde to odchytávání funguje výborně. Jako by byl problém s Error presenterem, ale ten se zdá v pořádku, zkoušel jsem ho vyměnit i za ten z fungující aplikace.
Vše běží na localu, není to problém, který by se vyskytl pouze na ostrém serveru.
Offline
#2 2. 3. 2010 10:42
- Honza Kuchař
- Moderator

- Místo: Brno
- Registrovaný: 12. 8. 2007
- Příspěvky: 1285
- Web
Re: Neodchytávají se výjimky
To je v pořádku. http://github.com/…or/500.phtml
Offline
#3 2. 3. 2010 10:48
- medhi
- Člen

- Registrovaný: 31. 3. 2009
- Příspěvky: 66
Re: Neodchytávají se výjimky
Možná jsem zapomněl zmínit, že mám použit ještě nějaký hodně starý skeleton, kde tato šablona není, a že ta výjimka je BadRequestException #404, tak netuším proč by měla naskakovat chyba 500. Navíc i kdyby ta šablona 500 naskočila, měla by načíst @layout.phtml, aby to vypadalo, ale nic takového se neděje.
Offline
#4 2. 3. 2010 11:07
- medhi
- Člen

- Registrovaný: 31. 3. 2009
- Příspěvky: 66
Re: Neodchytávají se výjimky
Ještě snad pomůže, že když si nechám chyby logovat, najdu tam tuto výjimku:
ApplicationException
An error occured while executing error-presenter
Offline
#5 2. 3. 2010 11:16
- Ondřej Mirtes
- Moderator

- Místo: Praha
- Registrovaný: 8. 1. 2009
- Příspěvky: 1357
- Web
Re: Neodchytávají se výjimky
Zkus ErrorPresenter podědit od Presenteru (ne od tvého BasePresenteru), jestli se to zlepší. Může tam nastat nějaká situace, která způsobí chybu i v ErrorPresenteru a aplikace by se tak dostala do nekonečné smyčky.
Offline
#6 2. 3. 2010 12:16
- medhi
- Člen

- Registrovaný: 31. 3. 2009
- Příspěvky: 66
Re: Neodchytávají se výjimky
Ondřej Mirtes: Zlepšilo se to, už to vypisuje @layout a pak chybu, protože tam zase chybí určité proměnné z BasePresenteru (logicky). Ale teď zjistit, co je v BasePresenteru špatně, že od něj nemůže ErrorPresneter dědit.
Offline
#7 2. 3. 2010 21:25
- medhi
- Člen

- Registrovaný: 31. 3. 2009
- Příspěvky: 66
Re: Neodchytávají se výjimky
Tak už jsem asi přišel na to kde je zakopán pes. Výjimka prý neumí přenášet persistentní parametry a jeden takový já v error presnteru potřebuji, jinak to hodí další výjimku a odtud to zacyklení.
Jde nějak získat v Error Presenteru pers. parametr? Někde jsem tu četl, že si ho mám uložit do session, ale není to trochu nečistý postup?
Díky
Offline
#8 3. 3. 2010 11:17
- Majkl578
- Moderator

- Místo: Pardubický kraj
- Registrovaný: 2. 5. 2009
- Příspěvky: 395
Re: Neodchytávají se výjimky
Řešením problému by měla být úprava Application::run().
Nahradit toto:
$request = new PresenterRequest(
$this->errorPresenter,
PresenterRequest::FORWARD,
array('exception' => $e)######
);
tímto:
$request = new PresenterRequest(
$this->errorPresenter,
PresenterRequest::FORWARD,
array_merge($request->getParams(), array('exception' => $e))######
);
(Issue na Githubu)
Editoval Majkl578 (3. 3. 2010 12:07)
Debian SID (2.6.35-rc5–686), Apache 2.2.15, PHP 5.3.2, MySQL 5.1.48; Nette 1.0-dev pro PHP 5.3
There are 10 types of people in this world. Those who understand binary and those who don't.
Offline
#9 11. 7. 2010 12:17
- Honza Kuchař
- Moderator

- Místo: Brno
- Registrovaný: 12. 8. 2007
- Příspěvky: 1285
- Web
Re: Neodchytávají se výjimky
Proč toto není v distribuci? Nezpůsobuje to přeci žádnou zpětnou nekompatibilitu?! (oživení)
Offline
#10 13. 7. 2010 15:26
- BigCharlie
- Člen
- Registrovaný: 13. 11. 2008
- Příspěvky: 140
Re: Neodchytávají se výjimky
To je ve hvězdách, a to už slaví tahle chyba včetně bugfixu své první výročí
Offline
#11 13. 7. 2010 16:44
- Majkl578
- Moderator

- Místo: Pardubický kraj
- Registrovaný: 2. 5. 2009
- Příspěvky: 395
Re: Neodchytávají se výjimky
Honza Kuchař napsal(a):
Proč toto není v distribuci? Nezpůsobuje to přeci žádnou zpětnou nekompatibilitu?! (oživení)
Asi jako dalších X věcí (drobností). :)
Debian SID (2.6.35-rc5–686), Apache 2.2.15, PHP 5.3.2, MySQL 5.1.48; Nette 1.0-dev pro PHP 5.3
There are 10 types of people in this world. Those who understand binary and those who don't.
Offline


