![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 30.05.2008 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Cześć, mam pytanie odnośnie wyjątków, czy można wyrzucić naraz więcej niż jeden ? :p np. jak jest powiedzmy rejestracja, to ja bym chciał, żeby naraz wyskoczyło 10 błędów, np:
- pole login jest niewypełnione - pole hasło jest niewypełnione - e-mail jest nieprawidłowy itd, a z tego co zrozumiałem w wyjątkach, to wyrzucimy jeden i już koniec ;p no to lepiej już chyba normalnie przygotowywać tablicę z błędami -_- hm, w ogóle jakoś nie widzę sensu stosowania tego cuda ;d powiedzcie, gdzie to można zastosować, żeby to naprawdę coś ułatwiło ;] -------------------- ?>
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 856 Pomógł: 19 Dołączył: 30.08.2005 Skąd: 100lica Ostrzeżenie: (0%) ![]() ![]() |
przykladowo zbierasz komunikaty o błędach i puszczasz dopiero jak komunikat jest pusty inaczej zwracasz bledy np:
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
wg mnie nie do takich zastosowań służą wyjątki. Wyjątki to wyjątki, czyli mają jak najrzadziej występować i tylko w przypadku nieprawidłowego działania aplikacji, a nie użytkownika, bo na to aplikacja musi być przygotowana poprzez jakiś system walidacji.
Aplikacja powinna wyrzucać wyjątki na przykład w przypadku niemożliwości połączenia z bazą danych. W przypadku niemożności zaincludowania jakiejś klasy, a nie w przypadku, że użytkownik coś źle wpisał. Odpowiadając na drugie pytanie.. to nie, nie można wywołać wielu wyjątków na raz... ale można wywoływać je kaskadowo, czyli zagnieżdżone wyjątki w catch() można wywoływać kolejne... Pozdrawiam |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Wyjątki możesz stosować zawsze, gdy przewidujesz, że może się wydarzyć jakieś zdarzenie, które zaburzy normalną pracę programu.
To co opisujesz, też się kwalifikuje do tej kategorii, jednak... Wyjątki niosą ze sobą komunikaty. Czyli w Twoim przypadku, dobrze by było przygotować np.
i wyrzucać taki właśnie wyjątek. W tym momencie możesz wyrzucić wyjątek nawet w formie: a następnie poprzez wyciągnąć te tablicę. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 30.05.2008 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Cezar708: no ale właśnie we wszystkich przykładach zastosowań wyjątków było sprawdzanie poprawności danych podanych przez użytkownika, najczęściej jest to tłumaczone na przykładzie funkcji podziel, jeden wyjątek to jak użytkownik poda w ogóle niepoprawne dane, a drugi jak dzielnik jest równy 0.
wipo: takie coś to ja już z powodzeniem stosuję :) próbuję się trochę przestawić na php5 scanner: aha -_- spróbuję to zrozumieć :] może to jest rozwiązanie Ten post edytował Spykaj 22.06.2008, 11:11:51 -------------------- ?>
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 18 Dołączył: 19.04.2008 Ostrzeżenie: (10%) ![]() ![]() |
Tak, niektorzy zastepowanie IF przez TRY/CATCH powinnni skonsultowac z lekarzem
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 30.05.2008 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Przesadzasz ;] w sumie to wpadłem na kilka pomysłów odnośnie tych wyjątków, można sporo w kodzie uprościć, np. czasem wyrzucać Exception a czasem FatalException, np. jak do bazy się nie można połączyć, to można Fatala wyrzucić, wtedy formularza wcale nie wyświetlać już więcej, albo brak uprawnień też fatal, a takie zapomnienie o jakimś polu to normalny wyjątek :]
-------------------- ?>
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 8.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
np.
i wyrzucać taki właśnie wyjątek. W tym momencie możesz wyrzucić wyjątek nawet w formie:
STOP, ludzie opamiętajcie się ![]() Wyjątki powinny służyć tylko i wyłącznie do obsługi wyjątkowych sytuacji (jak sama nazwa na to wskazuje). Sytuacja, gdy użytkownik podał błędny adres e-mail jest jak najbardziej normalnym stanem aplikacji. Z obsługą wyjątków związanych jest szereg kosztownych operacji np. zwijanie stosu. Jeśli chodzi o kod do walidacji danych, to po co wymyślać koło na nowo. Wystarczy wziąć pierwszy lepszy framework, np. Zend Framework i komponent Zend_Validate, Zend_Filter. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
A czy ja kogoś zmuszam, żeby akurat takiego mechanizmu użyć?
Jest to przykład, który można zastosować - nigdzie nie napisałem, że trzeba bo jest to jedyny i najlepszy sposób obsługi walidacji formularzy. I akurat stopować tu nie ma czego, bo użycie w taki czy inny sposób wyjątków (czy innej dostępnej konstrukcji) jest bardziej podyktowane kontekstem kodu jaki powstaje. Nie zabronisz przecież ~lucassus jakiemuś programiście używać ich, jeśli będzie to pasowało do konkretnej sytuacji. Jak będę chciał, to nawet wyrzucę E_USER_WARNING jeśli tylko w odpowiedni sposób go wychwycę. Bo podanie błędnych danych rejestracyjnych (w tym przypadku) można uznać za wyjątek od poprawnej rejestracji. Lub za błąd użytkownika. A może wspomniana rejestracja stanowi cześć jakiegoś API? Osobiście wolałbym dostać skonkretyzowany wyjątek na wyjściu niż true/false czy jakiś array i zastanawiać się, czy to jest array z błędami, czy z profilem usera. I na koniec - nie traktujcie luźnych przykładów jako wykładni - bo nerwy Was zjedzą jak Hammiltona na dzisiejszym wyścigu F1 ![]() Edit: ~cbagov: Przedszkole od szkoły różni się tym, że czasami pozwala się malować dzieciom rękami - mimo, że nie jest to "klasyczny przez wszystkich uznany" sposób obsługi farb. Ale przedszkolanki się w takim wypadku nie wysyła do lekarza. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 07:30 |