Tratarea Exceptiilor In PHP

Post Title

       Dupa cum am promis cu  mult timp in urma ca voi face tutoriale despre oop, mostenire si tratarea execeptiilor, astazi sper sa il termin pe cel de tratare a exceptiilor. asa ca sa trecem la treaba.

       Conceptul de tratarea a exceptiilor este urmatorul: un set de instructiuni este rulat intr-un bloc try,

daca in interiorul acestui bloc ceva nu functioneaza corect atunci se va genera o exceptie. Voi folosi ca exemplu clasele create pana acum in tutorialele oop [1,2]. Acum voi mentiona ca in php exceptiile trebuie lansate manual aceasta se face prin cuvantul cheie throw dar restul o sa va clarific dupa ce modific codul

  1.  
  2. <?php
  3. class masina{
  4. //datele membre ale clasei
  5. private $motor;
  6. private $putere;
  7. private $masina;
  8.  
  9. //constructorul clasei
  10. public function masina(){
  11. $this->motor=1.0;
  12. $this->putere='20cp';
  13. $this->masina='golf';
  14. }
  15. //metoda ce schimba tipul motorului, editata pentru tratarea exceptiilor
  16. public function modifica_motor($motor_){
  17. try{
  18. if(!is_numeric($motor_)){
  19. throw new Exception ("Capacitatea cilindrica a motorului trebuie sa fie un numar <br>");
  20. }else{
  21. $this->motor=$motor_;
  22. }
  23. }catch(Exception $tip){
  24. echo " A aparut o exceptie la linia ".$tip->getLine()." cu mesaju: ".$tip->getMessage();
  25. }
  26. }
  27. //metoda de schimbare a puteri motorului
  28. public function modifica_putere($putere_){
  29. $this->putere=$putere_;
  30. }
  31. //metoda de schimbare a tipului masini
  32. public function modifica_masina($masina_){
  33. $this->masina=$masina_;
  34. }
  35. //metoda afisare a masini,motorului si puterea
  36. public function toString(){
  37. echo 'Masina: '.$this->masina.'<br> Motor: '.$this->motor.'<br> Putere:'.$this->putere.'<br>';
  38. }
  39. }
  40. //declaram obiectul clasei
  41. $ob=new masina();
  42. //afisam masina dupa ce am apelat constructorul
  43. $ob->toString();
  44. //setam o noua masina
  45. $ob->modifica_masina("Passat");
  46. //setam un nou motor
  47. $ob->modifica_motor("ionica");//aici observam ca va fi generata si tratata exceptia
  48. //setam o noua putere pentru masina
  49. $ob->modifica_putere("180cp");
  50. //afisam noua masina
  51. $ob->toString();
  52. ?>

 

      Daca va uitati atent o sa constatati ca dupa blocul try vine un alt bloc catch care trateaza exceptia asa

ca va spun sa fiti atenti deoarece nu se poate bloc try fara catch, fara nici un catch nu se poate, dar cu

mai multe blocuri se poate.

Eu am folosit clasa Exception care este o clasa predefinita, dar puteti sa va definiti o clasa chiar voi care

sa trateze execeptiile , sau puteti sa o extindeti pe cea deja existenta, pentru incepatori e suficient atat, pe parcurs o sa va definiti propriile clase, pan atunci sa vedem rezultatul.

  1.  
  2. Masina: golf
  3. Motor: 1
  4. Putere:20cp
  5.  
  6. A aparut o exceptie la linia 22 cu mesaju: Capacitatea cilindrica a motorului trebuie sa fie un numar
  7.  
  8. Masina: Passat
  9. Motor: 1 //aici am pus ionica, va amintiti?
  10. Putere:180cp

 

Dupa cum vedeti in blocul try daca nu sa primit un numar sa lansat exceptia din blocul catch ( se poate

lansa o alata exceptie din catch)

Ca sa nu uit : constructoul clasei exception primeste 2 paramatri care sunt optionali, un mesaj de eroare si

un cod mai sus cred ca ati observat este pus doar un mesaj de eroare.

 

Bafta pana data viitoare, la urmatorul tutorialTongue Out

Acest tutorial este scris de mine si nu paote fi distribuit decat cu acordul meu si precizarea sursei

Autor articol

Ştiinţa fără religie este şchioapă, religia fără ştiinţă este oarbă (Albert Einstein)

Articolul anterior


Acest articol nu este comentat, fii primul care o face

Trebuie sa fii logat sa poti lasa un comentariu Autentificare Inregistrare Logare cu Facebook
top