![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Hi all
![]() Ostatnio trochę więcej czasu zacząłem poświęcać PHPv5(ale ja opóżnoiony). Wiadomo wprowadzono obslugę wyjątków. Ja od dawien dawna stosuję trigger_error któremu jako ciąg podaję zserializowaną tablicę i po wszystkim - mam fallbacki, nr linii funckje plik i co mi się rzewnie zamarzy ![]() ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#2
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wyjątki, jak sama nazwa wskazuje, służą do obsługi sytuacji wyjątkowych.
Czyli np, mamy sobie akcje i w pewnym momencie wystąpi jakaś nietypowa, że tak nazwijmy sytuacja, wtedy wyrzucamy wyjątek ( throw new CannotPerformException() ), a łapiemy go w ten sposób
Czyli, Próbujemy wykonać akcje, jeśli nie powiedzie się to wywołujemy inną akcje (catch(Cann....)), a drugi catch służy do przechwycenia wyjątków które mogły się gdzieś zawieruszyć. Btw gdzie się finally podziało :] -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Czyli w pewnym sensie nie musze się aż tak pilnować raportowania błędów ?
Z drugiej sstrony w tym performie() ja moge zadbac o obsluge wszystkich bledów.... -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#4
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ja jak używałem kiedyś tego trigger_error, to traktowałem to bardziej jako narzędzie debugujące.
Wyjątki eliminują(!) wszystkie w tym momencie zbędne if/else do obsługi błędów, zmiejszają kod i pozwalają na większe ponowanie nad nim. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 9.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Według mnie zaletą wyjątków jest to, że od razu widać, które części kodu są do obsługi błędu, a które nie.
Poza tym definiowanie własnej klasy, dziedziczącej po klasie Exception pozwala na stworzenie specyficznego wyjatku np. dla każdego modułu. A tak to tylko 13 typów błędów wbudowanych. Ciekawe dlaczego twórcy PHP5 nie zrobili instrukcji finally. Z takim czymś 'wyjątkowość ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 19.09.2004 Skąd: Uć Ostrzeżenie: (0%) ![]() ![]() |
ja swojego czasu nie moglem sie przekonac do wyjatkow zarowno w C++ jak i w JAVA, uzywalem mnostwa tych nieszczesnych if'ow.
Jednak przy budowie czegos wiekszego, a nawte nie tylko - np patrzac w czyjs kod, na oko widac co jest co, co gdzie lapiesz jesli masz ladnie wyjatki nazwane, poza tym propagacja rzuconych wyjatkow w gore, bez koniecznosci bawienia sie w zwracanie jakis dziwnych rzeczy a w php finally faktycznie by sie przydalo Ten post edytował Leezard 30.03.2005, 12:41:33 -------------------- Nie rób nic na siłę - weź większy młotek ;)
|
|
|
![]()
Post
#7
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Leezard @ 2005-03-30 12:41:09) a w php finally faktycznie by sie przydalo I jeśli będzie chęć ze strony użytkowników to najprawdopodoniej twórcy php wprowadzą finally, zgodnie z tym co mówili w wywiadzie ( któreś tam php solution, w empiku czytałem więc nie powiem ![]() -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Zresztą wyjątki i trigger_error mają ze sobą mało wspólnego. Wyjątki służą do obsługi błędów, a trigger_error do logowania, debugowania i eleganckiego wywalania aplikacji.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
tak na marginesie: pamiętajcie o exception_handler()
-------------------- Com powiedział, powiedziałem.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Z tego co gdzieś wyczytałem, to finally było na liście TODO, ale jakiś user posłał maila, iż jest to wielce nieprzydatne i sztab php finally nie dodał.
Źródła nie podam, nie pamiętam. Może to i błędna informacja :] -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Ja np. załuje, że wyjątki w SPL i standowych funkcjach gereują tylko konstruktory
![]() ![]() ![]() @Imperior - handler wyjątków już podpięty ![]() Natomiast pomysł z finnaly jest fajny ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Chyba widzialem takie rozwiazanie na forum: error_handler wylapywal errory i wyrzucal exception.
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że ta funkcja powinna byc gdzieś w komentarzach manuala.
-------------------- Com powiedział, powiedziałem.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 134 Pomógł: 0 Dołączył: 27.01.2005 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Ciekawe to, muszę przetestować takie rozwiązanie, tylo czy to obsługuje błędy wywalene też przez funkcje takie jak np: set_cookie() ?
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:34 |