Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problemy z try/catch
Forum PHP.pl > Forum > PHP > Object-oriented programming
Seth
Taki przykladowy kod:
  1. <?php
  2. try
  3. {
  4. $a = 10;
  5. $b = 0;
  6.  
  7. echo $a/$b;
  8. }
  9. catch ( Exception $e )
  10. {
  11. echo &#092;"Exception> \".$e.__toString();
  12. }
  13. ?>

...powinien wyswietlic Exception> (...)

Natomiast dzieje sie inaczej. Wyswietlane sa standardowe monity bledu:
Cytat
Warning: Division by zero in (...)


Czy tylko mnie tak to dziala dry.gif czy moze u was jest tak samo ?
bregovic
funkcje nie zucaja exeptions, tylko standardowe errory... niestety. jedyny sposob na uzycie wyjatkow to zucanie ich samemu, wzglednie eksperymentowanie z wlasnym error handlerem (set_error_handler" title="Zobacz w manualu PHP" target="_manual)...
Seth
Huh :|
przywyczajenie z C# wzielo gore winksmiley.jpg

No coz bede musial je obsluzyc wlasnie przez error handlera sad.gif
bregovic
tja, ja wiem czy to takie zle? oczywiscie byloby fajnie jakby wszytsko zwracalo wyjatki... ale to by wymagalo standardowych klas, interfaceow itp... a tak to mozna sobie samemu wszystko zaprojektowac.
Seth
Ale zauwaz, ze mamy przykladowo funkcje do obslugi bazy i nei wiemy gdzie wystapi blad: czy podczas polaczenia, czy podczas wybierania bazy itp. Po co, wiec robic co chwile IFy jak mozna oblac to try'em ? winksmiley.jpg

Natomiast jesli chodzi o rozwiazania tego to tworcy php mogli by pokusic sie o polaczenie wywalanych standardowo bledow z exceptionami i jezeli byl by try to wyzucamy exception, w przeciwnym razie standardowy monit... no ale winksmiley.jpg
bregovic
Oczywiscie, gdyby wyjatki byly zaimplementowane w jadrze php byloby pieknie, nieprzecze - ale tak jak jest teraz, tzn mozna robic throw i to lapac, to i tak o niebo lepsze niz to co bylo w 4 smile.gif
hawk
Niestety, nie da się dodać wyjątków do jądra php, bo to by kompletnie złamało kompatybilność wstecz. To tak jak w C++ : biblioteka standardowa zostaje ta sama, można co najwyżej obudować warstwą obiektową. Której i tak mało kto by w php używał, bo wydajność by spadła przecież. Nie da rady.

Takie coś jest możliwe tylko w językach, które od początku były robione jako obiektowe, np. w Javie, gdzie wyjątki są rzucane przez samo jądro.

Chociaż, teoretycznie dałoby się wyrzucić standardowe funkcje php do jakiejś osobnej, dołączanej biblioteki, i dać do wyboru drugą, gdzie dodano wyjątki. I ma się wybór, które extension chcemy sobie włączyć. To by było piękne...

A co do funkcji do obsługi bazy - tutaj akurat sprawa jest prosta, wystarczy że ktoś przepisze extension np. do obsługi mysql i doda tam wyjątki.
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.