Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Exception - obsługa wyjątków.
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Od kilku dni próbuję pojąć "rzucanie" wyjątków.

W swoich klasach "rzucam" wyjątkami przy wystąpieniu błędów typu critical dla mojej aplikacji (czyli takie, które uniemożliwiają dalsze działanie aplikacji)

Powiedzmy, że wyjątki wydają mi się troszkę "nieporęczne" w użytku.

Mam przykładowo:
(piszę od ręki)

Kod
class layout {

// jakieś metody

function load($dir, $file) {

if (file_exists(/* argumenty)) {
// include
}else{
// rzucam wyjątkiem
throw new Exception('Nie mogę załadować pliku xxx.php');
}
}
}


I potem w innym pliku chcąc "złapać" wyjątek...

Kod
try {
$handle->load($plik);
} catch {
// obsługa błędu, czy to zapisanie loga czy wyświetlenie użytkownikowi informacji o błędzie
}


Według moich założeń, wyjątkami rzucałbym tylko przy błędach krytycznych, o których pisałem wyżej.
I tak jest ich sporo, a używanie wszędzie try { } catch { } jest co najmniej nie wygodne.

Macie jakieś swoje pomysły? Doświadczenia ? Co do łapania wyjątków i ich obsługi ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. $handle->wyjatek1(); // wywoła funkcję wyjątek1 z klasy nazwa1
  3. ?>

Nie wywoła. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A this, to gdzie?

Cytat
Jakieś pomysły ?

Nie wiem, czy mamy to samo na myśli, ale przecież możesz tworzyć własne wyjątki...

  1. <?php
  2. class mysqlException extends exception{}
  3. class parserException extends exception{}
  4.  
  5. try{
  6.   methMysql();  // throw new mysqlException
  7.   methParser();  // throw new parserException
  8. }catch(mysqlException $mE){
  9.   echo $mE->getMessage();
  10. }catch(parserException $pE){
  11.   echo $pE->getMessage();
  12. }
  13. ?>


Nie trzeba niczego nowego wymyślać. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 17:49