Seth
10.10.2004, 17:43:58
Taki przykladowy kod:
<?php
try
{
$a = 10;
$b = 0;
}
catch ( Exception $e )
{
echo \"Exception> \".$e.__toString(); }
?>
...powinien wyswietlic Exception> (...)
Natomiast dzieje sie inaczej. Wyswietlane sa standardowe monity bledu:
Cytat
Warning: Division by zero in (...)
Czy tylko mnie tak to dziala

czy moze u was jest tak samo ?
bregovic
10.10.2004, 17:56:35
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
10.10.2004, 18:04:33
Huh :|
przywyczajenie z C# wzielo gore

No coz bede musial je obsluzyc wlasnie przez error handlera
bregovic
10.10.2004, 18:11:11
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
10.10.2004, 20:17:41
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 ?

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
bregovic
10.10.2004, 20:23:53
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
hawk
11.10.2004, 08:31:52
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.