Prisposobenie defaultneho system erroru

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

V pripade, ze sa vyskytne chyba az pri renderovani je v pripade zapnutej ladenky zobrazena defaultna chybova hlaska, ktora je napevno zadratovana vo frameworku. Nebolo by vhodne poskytnut moznost zobrazit vlastnu chybovu hlasku?

vvoody
Člen | 910
+
0
-

Tá možnosť tu je, v configu a sekcii Nette môžeš nastaviť názov triedy error presenteru. Môžeš použiť napríklad ten zo sandboxu ktorého šablóna je identická ako tá čo je zadrátovaná vo frameworku.

edit: myslím že pre ErrorPresenter tam treba nastaviť len Error alebo error

Editoval vvoody (31. 8. 2012 15:40)

puty
Člen | 3
+
0
-

nehovorim o vynimkach, ktore su odchytavane Error presenterom. V pripade, ze sa vyskytne chyba napr v sablone, uz nie je mozne predat riadenie Error presenteru. O taky cas, ak je aktivny Debugger napevno sa includuje Nette/Diagnstics/templates/error.phtml. (resp v zavislosti od vyvojarskeho/produkcneho prostredia sa bud includne spominany subor, alebo je klasicky rozpisana chyba pomocou ladenky.)

v dev prostredi je to samozrejme ziaduce, ale v pripade produkceno prostredia to rozbija layout.

Aurielle
Člen | 1281
+
0
-

V tom případě nesmíš nechat chybu probublat až do šablony – kód, který tam máš, nejspíš patří jinam.

vvoody
Člen | 910
+
0
-

Zaujímavé, išiel som si to hneď vyskúšať na sandboxe (2.0.5) a prišiel som na to, že ak spôsobím

  • fatal error (spúšťal som neexistujúcu metódu) odchytí ho Debugger a rendruje svoju šablónu
  • throw exception odchytí Application a spustí ErrorPresenter ak je nastavený

Neviem či toto je správne chovanie. Tiež by som čakal že sa po fatal errore spustí ErrorPresenter. Ale že by malo vplyv miesto vzniku erroru (šablóna/presenter) na to či sa ne/spustí ErrorPresenter sa mi vôbec nezdá. Ak som vyhodil výnimku kdekoľvek vždy sa spustil Error presenter. No každopádne tu sa bude musieť vyjadriť niekto kto vidí do Nette trochu hlbšie.

puty
Člen | 3
+
0
-

Ano samozrejme v case renderovania by sa chyby uz vyskytovat nemali.. ale v principe by sa nemali vyskytovat nikde, resp by mali byt spravne osetrene. Ale nemyslim si, ze sa na to da spolahnut a preto aj defautlne osetrenie chyboveho stavu je dolezite. A ak sa uz nieco take vyskytne, malo by to vyzerat „dostojne“ to znamena nerozbit kompletne layout aplikacie. Preto je myslim dolezite aby som ako vyvojar mal pod kontrolou aj tuto cast frameworku.

ErrorPresenter sa moze spustit len v pripade, ze este nebola volana render metoda. Pocas renderu su uz data klientovi odosielane, preto ak pocas renderu vyskoci chyba vyrenderuje sa len vystup len ciastocne.