Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Wyjątki i łapanie. Action Helper
Forum PHP.pl > Forum > PHP > Frameworki
kangur91
Witam,
Szukam i szukam i nie mogę znaleźć rozwiązania. Mianowicie "Jak wyłapywać wyjątki wyrzucone z Action Helpera?".

Jeżeli np. w Action Helper rzucam wyjątek
  1. throw new Zend_Exception('You are not allowed',403);

Otrzymuję wynik
  1. Fatal error: Uncaught exception 'Zend_Exception' with message 'You are not allowed' in..


Mam ustawiony standardowy ErrorController oraz throwExceptions mam ustawione na false.

KrzysiekWildfire
Na moje oko działa to poprawnie, z mojego doświadczenia:
Nie ma różnicy pomiędzy:
  1. throw new Exception('error!');

a
  1. throw new Zend_Exception('You are not allowed',403);


Jeżeli w application.ini masz ustawione:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1


To wyświetla Ci wszystkie błędy, tak abyś mógł dojść gdzie jest błąd, a w przypadku:

phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
resources.frontController.params.displayExceptions = 0


To wyświetla Ci tylko informację o błędzie. Dobry efekt z takimi błędami jest, gdy wykorzystujesz layouty - wtedy masz zachowany cały layout strony (nawigację) i użytkownik nie widzi białej strony z błędami których nie rozumie.
drPayton
A spróbuj metodą chyba najprostszą:

w index.php:

  1. try {
  2.  
  3. (...)
  4.  
  5. $app->bootstrap()->run();
  6.  
  7. (...)
  8.  
  9. } catch(Exception $oException) {
  10.  
  11. // i tu go obsłuż
  12. }


Trochę to chyba niepoważne, ale ja jak do tej pory nie znalazłem innej (prostej) metody na łapanie absolutnie wszystkich wyjątków wstydnis.gif

99% było łapanych i obsługiwanych przez standardowy ErrorController, ale niektóre były mocno oporne...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.