Automaticke odchytavanie vynimiek v presenteri

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

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
+
0
-

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
+
0
-

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
}