Vyzahování výjimek a pád aplikace
- ondrej256
- Člen | 187
Zdravím,
narazil jsem nedávno na takovou situaci, kdy na ostrém webu se zobrazila stránka server 500 error a majitel webu volal ať chybu opravím.
Zjistilo se, že nově přidaná komponenta vyhazuje výjimku, protože v jednom případě, kdy byl uživatel přihlášen a měl ještě nějaké přízaky.
Jednalo se o komponentu, která se stará o vykreslování měřících skriptů, což není důležité pro běh celého webu. Web na kterém se to stalo je eshop a návštěvnící si kvůli této chybě nemohli udělat objednávku, což je průser.
To mně dovedlo k myšlence, zda je nějakým způsobem možné určit:
- výjimky, které jsou závažné natolik aby spadla celá aplikace
- výjimky, které stačí zalogovat pro programátora a není potřeba aby kvůli jim padal web (například mnou zmíněná komponenta pro vykreslování měřících kódů)
Předem děkuji za odpověď
- Lukes
- Silver Partner | 68
No zde je spíše problém s špatně navrženou komponentou, případně její připojování k aplikaci, kdy nemá vše potřebné. Jako výjimka je výjimka, prostě pokud není zachycena, tak shodí aplikaci. Osobně si nedokážu představit jak by si to chtěl odchytávat nějak globálně. Ono rozlišit kritickou a nějakou méně závažnou výjimku je obecně docela problematické, protože nevím jestli po vyhození výjimky může aplikace fungovat dál.
Samozřejmě, že si můžeš udělat typ výjimek, které budeš nějak rozlišovat a někde v presenteru odchytávat a případně do na stránku posílat nějakou hlášku, ale to už je spíše tvoje aplikační logika.
- ViPEr*CZ*
- Člen | 818
No to je vlastnost exceptions. A bud si ji podle jmena zachytite a adekvatne zareagujete a nebo se na to vyprdnete a aplikace spadne :-) Skoro ve 100% kvuli tomu, ze jsme lide na neco zapomenete. Tohle je takovy klasicky scenar, kdy se vyplati (a to snad jakkoliv) testovat. :-)
- GEpic
- Člen | 566
Však je možné rozlišit co je kritická a co není:
try {
} catch () {
} finally {
}
Zde se můžete rozhodnout, zda-li hodit pětistovku, nebo pokračovat dál. Ale chce to nad každým kusem kodu přemýšlet a testovat, jaké zde můžou nastat situace a snažit se odchytit všechny možné exceptions. Nesnažit se toto řešit globálně, chytání vyjímek vyžaduje extra péči, protože uživatel toho z pravidla rozbije víc, než vy při lazení.
Editoval GEpic (20. 8. 2016 19:28)