Prisposobenie defaultneho system erroru
- vvoody
- Člen | 910
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
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.
- vvoody
- Člen | 910
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
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.