![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Niedawno, w momencie gdy Bastion, dał do oceny swojego Debuggera, zaczałem zastanawiac sie jaki to ma sens. Mamy przeciez juz Error Handler, gdy dorzucimy do tego Wyjatki wydaje mi sie, ze to wszystko czego potrzeba. W moim odczuciu, Error Handler, czyli standardowa obsługa bledów, moze byc jeszcze uzbrojona w dodawanie odpowiedniego wpisu do bazy i wysylanie maila do administratora. Mamy funkcje, set_error_handler, dzieki ktorej mozemy zrobic własny, "ładny", dzieki ktoremu mozemy wlasnie dodac wspomniane przeze mnie wyzej rzeczy i zmienic sposob wyswietlania bledu (tak jakby szablon) i wydaje mi sie ze to wszystko. Ponadto mamy funkcje error_log, ktora zapisze do logow apacha te bledy. Jest jeszcze trigger_error(), ktora w momencie istnienia wyjatkow troszke traci sens? Wyjatki... w moim rozumieniu, przydatne przy takich sytuacjach:
Obsługuja reszte bledów, ktore wynikna w momencie złego działania skryptu. Takze, mozemy dodac do tego "ładniejsze" wyswietlanie informacji o wyjatku, zapisywanie wyjatkow do bazy i powiadomienie mailem do admina. Mamy takze set_exception_handler, ktorej funkcji istnienia do konca nie rozumiem. W manualu widziałem ciekawe połaczenie Error Handlera i wyjatkow (ktore sa przeciez zwyklym rozszerzeniem EH).
Wyjatki obsłuza zarowno typowe wyjatki jak i Error Handlera. Jesli jest to Wyjatek mozemy go zapisac do bazy i wyslac maila, jesli jest to Error, mozemy dodatkowo zapisac go do logow. Nie widze w takim wypadku sensu istnienia Debuggera, chyba ze ma on jeszcze jakies inne zadania. Jesli sie myle prosze o wyjasnienie... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Vomit @ 2006-03-12 21:39:56) Zdefiniuj mi "rozne typy wyjatków" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) W tym konkretnym przypadku (ktory podałem) jedna klasa jest identyczna jak druga, rozni sie jedynie nazwa... a czy tu chodzi o nazwy? Wg. mnie moglaby byc to jedna klasa, ktora obsłuzyłaby nie tylko wyjatki ale takze i bledy. Ale wyjątków normalnie nie obsługuje się w sposób, który podałeś. Łapiesz na top-level Exception i wywalasz na ekran. A przecież normalnie robi się catch po fragmencie kodu, łapie określony wyjątek i obsługuje. Jak chchcesz to zrobić dysponując tylko jedną klasą wyjątku? Nie będziesz wiedział, co się stało i nie będziesz w stanie nic zrobić poza wywaleniem komunikatu na ekran i przerwaniem skryptu. Generalnie jestem przeciwny podanemu przez ciebie kodowi. Czemu ma on służyć? Wyjątki nie służą do wywalania komunikatów na ekran. Nie służą też do logowania błędów. Ani do debugowania aplikacji. Służą do obsługi błędów, a łapiąc zwykły Exception cieżko cokolwiek obsłużyć, chyba że będziemy wstawiać try/catch co drugą linię kodu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 13:46 |