Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kiedy własna funkcja nie może zastąpić wyjątków?
Forum PHP.pl > Forum > PHP
klusekman
Uczę się właśnie php obiektowego i używane są często wyjątki. Mi się wydaje, że łatwiej by było wszystko obsłużyć przez if !cośtam własna_funkcja() else inne działanie. Przykładowo jest w kodzie if(!czy zmienna to string) jeżeli nie to throw new exception. Czy nie lepiej by było zrobić swoją funkcję którą można byłoby kontrolować co się dzieje w takim przypadku, czyli np. czy wykonywać dalej z powiadomieniem, czy bez powiadomienia, czy wszystko zamknąć i nic nie wyświetlać. Czy mógłby mi ktoś podać przykład, albo wytłumaczyć po co jest ten mechanizm?
Uriziel01
Przedstaw choć jedno miejsce w którym własna funkcja ma przewagę nad blokiem
  1. try {
  2. } catch (Exception $e) {
  3. }


1)Masz tutaj pełną dowolność co zrobisz po 'wykryciu' wyjątku, nie rozumiem co niby Cie ogranicza ?
2)jako że jest to natywna funkcja jest zapewne (nie wiem na pewno) znacznie szybsza od zainicjowanej przez samego użytkownika.
3)Mechanizm ten służy do obsługi wyjątków, jeżeli jest to zwykła akcja która wywołuje dwie różne funkcje w zależności od typu atrybutu (przykładowo) to nie powinieneś oczywiście używać wyjątków ale zwykłych instrukcji warunkowych tak jak przytoczyłeś to powyżej.
Tak jak w każdym przypadku trzeba po prostu znać umiar w tym co się robi.
Sephirus
Popieram @up kombinowanie z "zastępowaniem" wyjątków na ogół nie wychodzi najlepiej - można zbudować coś bardziej konfigurowalnego na podstawie wyjątków. Co do samego problemu to musisz poczytać o tym kiedy zastosować wyjątek a kiedy wystarczy "zwrócić false" smile.gif Używanie wyjątków wszędzie tam gdzie to możliwe także mija się z celem.

AFAIK PHP posiada obsługę wyjątków ale nie jest moim zdaniem językiem na bazie którego powinno się te wyjątki omawiać. Java, C# itp. - te języki są bardziej oparte na wyjątkach - poczytaj dlaczego tam się je stosuje - powinieneś znaleźć coś ciekawego na ten temat.

Co do tworzenia funkcji zamiast wyjątków to dziwny pomysł chodź rozumiem idee zwiększenia konfigurowalności to samych funkcji już nie. W PHP mamy 2 mechanizmy sprawdzania/pokazywania błędów - errory i wyjątki. O ile errory może generuje się łatwiej to dużo ciężej zbudować funkcję je obsługujące w jakiś żądany przez nas sposób. Wyjątki są w tym kontekście lepsze - pozwalają nam kontrolować czy traktujemy coś jako error czy tylko akcję po której ma być dana reakcja. Można łatwo tworzyć własne klasy wyjątków i ich handlery przez co można budować na nich fajne systemy raportowania, logowania błędów itd. Można napisać handler obsługujący nie przechwycone wyjątki i w zależności od klasy wyjątku podejmować odpowiednie akcje itd wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.