![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam sie jak rozwiazac problem z wyjatkami, otoz:
Tworze sobie pochodne klasy Exception: MessageException (mniej powazne bledy) FatalException (powazny blad zatrzymujacy dzialanie aplikacji) MessageException chcialbym uzywac np. do problemow typu: Niepoprawne ID, Nie ma takiego rekordu w bazie, etc., a FatalException do sytuacji gdy np. nie ustanowiono poleczenia z db
Efektem tego ma byc ze jezeli nie polaczy sie z baza dostanie na ekranie tylko komunikat o bledzie (FatalException), zas jesli wystapi blad w klasie Users (MessageException) to wsywietlony zostanie szablon z komunikatem o bledzie (header, komunikat, footer) Jak to rozwiazac? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
No nie zabardzo splatch, ja widze to raczej tak (podzial na bledy i bledy krytyczne):
Jak widac pierwsza czesc bloku try wyswietla szablon calej strony z ostrzezeniem (np. nie podano id) lub zawartoscia akcji (wyswietlony user), zas druga czesc bloku zatrzymuje cala aplikacje i wyswietla komunikat o krytycznym bledzie (np. brak polaczenia z db) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No nie zabardzo splatch, ja widze to raczej tak (podzial na bledy i bledy krytyczne):
Jak widac pierwsza czesc bloku try wyswietla szablon calej strony z ostrzezeniem (np. nie podano id) lub zawartoscia akcji (wyswietlony user), zas druga czesc bloku zatrzymuje cala aplikacje i wyswietla komunikat o krytycznym bledzie (np. brak polaczenia z db) kicaj zanim zapniesz wyjątki do walidacji zastanów się kto powinien obsługiwać błędy walidacji bo sprawa obsługi błędów i walidacji to dwie różne rzeczy, no chyba że chcesz traktować błędy z inputu na równi z błędami systemowymi. W końcu możesz mieć FatalException przy połączeniu do bazy danych i FatalException przy walidacji, bo ktoś nie podał wartości w polu user_login. Z resztą walidację omawiamy już w oddzielnym temacie i sugestie z użyciem wyjątków do walidacji powinny trafiać tam, a nie tu, jak sądzę. Myślenie o wyjątkach w dwóch kategoriach - krytyczne i "nie krytyczne" jest złe bo nie masz rozróżnienia na kontekst wystąpienia błędu i zawężasz sobie pole do ich obsługi. W końcu nie wszystkie FatalException-y obsługujesz tak samo. Obsługa wyjątków w try/catch przez instanceof jest prawdę powiedziawszy lekkim naginaniem zasad związanych z przeznaczeniem wyjątków i zastosowaniem bloku catch. Nie odbiega to od trigger_error zatem zastanów się czy piszesz obiektowo czy też bawisz się w przeplatanie. Kwestia wyjątków w akcji - obsługujesz tylko te, które rzeczywiście musisz. W większości przypadków możesz wydelegować ich obsługę do FrontControllera i pozbyć się śmieci z logiki. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 15:08 |