[php5] Problem z wyjątkiem

0

Witam mam taki kod:

	public function Select($sql){
				
try{
	$wynik = mysql_query($sql,$this->Conn); 
             $arReturn = array();
	while($row = mysql_fetch_array($wynik)){
		$arReturn[]=$row;			
	}					   
         
           return($arReturn);
            
}catch(Exception $e){
          echo $e->getMessage();
          }  
           
}

Mam taka obsluge wyjatku, w javie to zadziala wypluje wyjatek jezeli np zapodamy zapytanie i bedzie brak tabeli w bazie lub nie bedzie podlaczona baza. Pierwszy raz robie w php obsluge try chatch , co tu jest zle?

0

nie rzucasz wyjątku. mysql_* nie rzucają wyjątku a generują jedynie błąd/ostrzeżenie.

0

Jeśli zależy ci na używaniu wyjątków, to możesz wykorzystać PDO

0

Wlasnie znalazlem taki kod wyjatku w tutorialu:

<? 
  function dziel($a, $b) { 
    if ($b==0) { 
      throw new Exception("niedozwolone dzielenie przez zero"); 
    } 
    return (int)$a/(int)$b; 
  } 
  try { 
    dziel(5, 0); 
  } 
  catch (Exception $e) { 
    echo "Błąd to: ".$e->getMessage(); 
  } 
?> 

Tylko ze ten wyjatek ja sam programuje wiec co to za łaska ? W javie np wyjatki sa automatyczne , no chyba ze czegos tu nie rozumiem. No bo jezeli by sami rzucamy wyjatek ktory moze wystapic to troche bez sensu, bo tu wlasnie chodzi o wyjatek ktorego np my nie przewidzimy a chcemy ta sytuacje obsluzyc.
Teraz pytanie co robi klasa Exception? Jezeli sami definiujemy wyjatki.

0

Klasa Exception oraz konstrukcja try..catch daje możliwość programowania z wykorzystaniem z wyjątków. Niestety niewiele rozszerzeń PHP korzysta z tej możliwości. Jak już wspomniałem PDO daje bardzo wygodny, obiektowy i abstrakcyjny dostęp do bazy danych i daje możliwość włączenia rzucania wyjątku w momencie wystąpienia błędu.

0

PHP nadal w większości opiera sie o kompatybilność (taki mysql_* to chyba z czasów PHP3 pochodzi), stąd wyjątków nikt nie rzuca. Pół biblioteki standardowej nie wspiera wyjątków, ale to co jest tworzone z myślą o PHP >= 5 już zaczyna wreszcie wyjątki wspierać jak trzeba. Choćby to PDO.
http://room-303.com/blog/2007/08/15/wyjatkowosc-php/

Klasa Exception jest klasą bazową (ale chyba nie abstrakcyjną) dla własnych wyjątków użytkownika. Identycznie wygląda to w Delphi czy innym C#.

0

Czyli jest jak myslalem ze wyjatkow po prostu nie ma. W Javie natomiast wyjatki sa wspaniale rozbudowane, program nawet sie nie skompiluje jezeli wykryje ze jest brak try catch a wyjatek moze zajsc. Caly czas mam wrazenie ze Php za wszelką cenę cchce dogonic jave , proponuje w nastepnym kroku zamienic strzalki na kropki oraz zlikwidowac znaczki dolara, juz bedzie nieco blizej :-)

0

Ale by było pięknie gdyby zmienili strzałki na kropki :)
PHP bardzo chce dogonić coś, ale Javy w ten sposób gonić nie będzie (bo musi mieć "łagodną krzywą nauki" i za trudny być nie może, a OOP jest trudne). I tak właściwie to PHP jest jedyny w swoim rodzaju.

I do tego jest cholernie nielogiczny w kilku sytuacjach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1