Automaticke odchytavanie vynimiek v presenteri
- pogo
- Člen | 29
Zdravim,
je mozne odchytavat automaticky nejaku vynimku v presenteri bez nutnosti pisat
try catch
blok v kazdej akcii zvlast?
Problem: model mi v pripade chyby vyhodi nejaku vynimku, no nechcem, aby
bola stranka pri konkretnych vynimkach presmerovana na error presenter, ale
zostala na povodnej stranke a len do flash message vypisala spravu vynimky. Je
take nieco mozne?
Diky moc.
- David Matějka
- Moderator | 6445
vsechny action* a render* metody se volaji skrz tryCall ( https://api.nette.org/…ent.php.html#86 ) takze teoreticky by to slo nejak takto:
<?php
protected function tryCall($method, array $params){
try{
return parent::tryCall($method, $params);
} catch(ModelException $e){
//zpracovani vyjimky
}
}
?>
hlavne nechytat vsechny vyjimky, nefungoval by napriklad redirect (respektive jak pise Majkl578)
Editoval matej21 (19. 10. 2012 12:24)
- Majkl578
- Moderator | 1364
matej21 napsal(a):
hlavne nechytat vsechny vyjimky, nefungoval by napriklad redirect
Chytat všechny může, jen musí AbortException propustit dál.
try {
// ...
} catch (\Nette\Application\AbortException $e) {
throw $e; // re-throw
} catch (\Exception $e) {
// process exception
}