![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 1 Dołączył: 6.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Chciałem się dowiedzieć, kiedy NALEŻY stosować wyjątki w OOP? Chodzi mi o konkretne przykłady i jakieś dobre wytłumaczenie.
Wyjątki jak sama nazwa wskazuje, ale np . Kod $a=5; $b=0; if($a<$5){ ... } Też mogli byśmy użyć wyjątków? i czy powinno się? bless |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
~Orzeszekk
To, że nie jest to sytuacja wyjątkowa, nie oznacza, że jest to sytuacja normalna. Poniekąd sam sobie zapracowałeś na to odstępstwo pozwalając wpisywać użytkownikowi cokolwiek w pole przeznaczone na datę. Ja wolę zapobiegać niż leczyć i nie muszę komplikować kodu stosując wyjątki tam, gdzie nie jest ich miejsce. Oczywiście nie mogę i nie chcę nikomu zabronić stosowania wyjątków do sterowania programem w normalnych sytuacjach, przewidzianych przez programistę poprzez odpowiednią walidację danych (po to piszesz walidację, żeby takie sytuacje przewidzieć i dopiero to, czego nie przewidziałeś lub nie mogłeś przewidzieć - obejmujesz w klamry try {(...) throw (...)} catch(...){}). Nie stosuję wyjątków do kontrolowania danych pochodzących od użytkownika, php oferuje tyle standardowych narzędzi, że w zupełności wystarczy: - wymuszenie określonego typu - i długości danych - rzutowanie zmiennej do określonego typu - ustawienie domyślnej wartości w przypadku danej spoza zakresu ~Crozin Oprócz tego, co napisałeś czy nie jest tak, że wyjątki stosuje się wtedy, jeśli można przywrócić normalny stan aplikacji sprzed wystąpienia problemu (tj. po obsłużeniu błędu)? Czy funkcja w php czytająca plik rzuci wyjątek czy zwróci false? Znowu wracamy do kwestii indywidualnej każdego z nas - tj. czy używać wyjątków do sterowania logiką aplikacji czy tylko w sytuacjach faktycznie wyjątkowych, gdzie zostawiamy wolne pole do obsługi napotkanego problemu? Uważam, że wyjątki powinno stosować się tylko wtedy, jeśli nie możemy określić powodu napotkanego błędu lub przewidzieć zachowania danego bloku instrukcji z zestawem danych, których nie możemy ani sprawdzić, ani zawczasu przewidzieć ich wartości. Ten post edytował darko 31.10.2011, 16:03:58 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
~Orzeszekk To, że nie jest to sytuacja wyjątkowa, nie oznacza, że jest to sytuacja normalna. Poniekąd sam sobie zapracowałeś na to odstępstwo pozwalając wpisywać użytkownikowi cokolwiek w pole przeznaczone na datę. Ja wolę zapobiegać niż leczyć i nie muszę komplikować kodu stosując wyjątki tam, gdzie nie jest ich miejsce. Oczywiście nie mogę i nie chcę nikomu zabronić stosowania wyjątków do sterowania programem w normalnych sytuacjach, przewidzianych przez programistę poprzez odpowiednią walidację danych (po to piszesz walidację, żeby takie sytuacje przewidzieć i dopiero to, czego nie przewidziałeś lub nie mogłeś przewidzieć - obejmujesz w klamry try {(...) throw (...)} catch(...){}). Nie stosuję wyjątków do kontrolowania danych pochodzących od użytkownika, php oferuje tyle standardowych narzędzi, że w zupełności wystarczy: - wymuszenie określonego typu - i długości danych - rzutowanie zmiennej do określonego typu - ustawienie domyślnej wartości w przypadku danej spoza zakresu. Jak chcesz wymusic na uzytkowniku wpisanie w pole tekstowe formatu w dacie RRRR-MM-DD a nie swojego imienia lub wulgaryzmu? chyba stojąc nad nim z bejzbolem? No chyba ze HTML5 wprowadza input type="date" ? Bo chyba nie nazywasz wymuszeniem na uzytkowniku napisanie javascriptu do twojej strony ktory blokuje przycisk submit jeżeli uzytkownik nie poda poprawnej daty, bo jesli ktos bedzie zlosliwy to wyłączy javascript, wyśle ci perlem czy mozillą firefox spreparowany formularz. I twój skrypt juz nie bedzie mial na to odpowiedzi, poniewaz zalozyles ze wymusiles na userze poprawną datę. Twoj argument o poprawieniu danych jest w PHP bez sensu, poniewaz, widok wyswietlajacy formularz do wypelnienia i widok wyswietlajacy komunikat o poprawnym wykonaniu akcji/błędzie to są 2 różne uruchomienia skryptu. Ten skrypt (widok) ktory odbiera dane z formularza i na ich podstawie tworzy cos na stronie: news, nowe konto, nowe <tu wstaw cos> ma prawie zawsze tyle do zrobienia: odczytac dane z formularza, zapisac je i wyswietlic komunikat o powodzeniu lub błędzie. A jesli chodzi o obcy kod nie ma lepszego spososbu na poinformowanie o błędzie niz odpowiednio spreparowany wyjątek. Wyjątek pozwala przemycic w kodzie sensowny komunikat na co nie pozwala funkcja rzucająca błędy lub return liczba. Ten post edytował Orzeszekk 31.10.2011, 22:20:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 08:08 |