Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problemy z try/catch
Seth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) czy moze u was jest tak samo ?
Go to the top of the page
+Quote Post
bregovic
post
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


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)...

Ten post edytował bregovic 10.10.2004, 17:58:37
Go to the top of the page
+Quote Post
Seth
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Huh :|
przywyczajenie z C# wzielo gore (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

No coz bede musial je obsluzyc wlasnie przez error handlera (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
bregovic
post
Post #4





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Seth
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


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 ? (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
bregovic
post
Post #6





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
hawk
post
Post #7





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:43