Crearea unei clase lucrează întotdeauna la un nivel abstract: nu este creată o anumită zonă de memorie, ci doar comportamentul obiectelor. Clasa este un instrument care, asemenea limbajului de programare, poate fi folosit în domenii și aplicații complet diferite.
Manipularea situațiilor de urgență, eroarea în codul și erorile de introducere a datelor pot fi diferite pentru diferite aplicații: suficient de undeva pentru a afișa un mesaj folosind funcția de ecou, dar undeva într-un mesaj ar trebui să fie pregătit ca NTML - designul paginii, în concordanță cu restul pagini de aplicație; undeva ar trebui să fie plasat un mesaj de eroare în jurnal (într-un fișier sau într-o bază de date).
Este imposibil să anticipăm în prealabil formatul de eroare, iar predeterminarea acestuia va restrânge domeniul de aplicare al clasei și reutilizarea ei. Modul de ieșire din situație este de a separa codul de clasă și codul de manipulare a erorilor, acest lucru poate fi realizat de noi și ne va permite să facem un mecanism de excepție.
Dezvoltatorul de clasă trebuie să arunce o excepție, iar utilizatorul de clasă poate să o proceseze la discreția sa. Dezvoltatorii pot proiecta propriile lor excepție, care este o clasă atunci când vine vorba de generarea de transmisie excepții excepții obiect la condițiile producerii riscului într-un handler excepție.
Comoditatea de a aplica situații excepționale unei abordări orientate pe obiecte nu înseamnă că tratarea erorilor procedurale ar trebui neglijată. În PHP, există un sistem dezvoltat pentru urmărirea și controlul erorilor și nu merită neglijat. Pentru a implementa mecanismul de exceptare în PHP, se introduc următoarele cuvinte cheie: încercați (control), aruncați (generați) și capturați (procesați).
observaţie:
Puteți utiliza mecanismul de excepție, chiar dacă programați în stil structural, mai degrabă decât în stilul OOP. Cuvântul cheie de încercare vă permite să selectați un bloc așa-numit controlat oriunde în script, urmat de unul sau mai multe blocuri de tratare a excepțiilor implementate cu cuvântul cheie de captură:
Rețineți: dacă nu se ridică nicio excepție, blocul de captură nu va fi executat niciodată.
Excepția este un obiect al clasei Excepție, care este creat folosind cheia nouă direct atunci când este apelată instrucțiunea throw. Cu toate acestea, obiectul poate fi pregătit în avans:
Când aruncați o excepție, cuvântul cheie cu aruncare ia un Excepție sau un obiect de clasă derivat.
Clasa de excepție
Pentru a utiliza în mod eficient clasa Excepție, trebuie să vă familiarizați cu interfața sa. Mai jos sunt proprietățile clasei de excepție declarate cu specificatorul de acces protejat, care poate fi accesat folosind metode de clasă, precum și din clase derivate.
Clasa de excepție se referă la așa-numitele clase de pre-definite, respectiv clase care sunt implementate în PHP - interpretul și nu necesită punerea în aplicare de către programator.
Proprietăți protejate ale clasei de excepție:
- $ this-> message - Un mesaj text care descrie excepția.
- $ this-> code - Cod numeric. alocat acestui tip de excepție.
- $ this-> - Numele fișierului în care a apărut excepția.
Metode de clasă excepțională
Deoarece proprietățile clasei Excepție sunt declarate cu specificatorul protejat, acestea sunt accesate folosind metodele de clasă descrise mai jos:
__construct publică funcția ($ mesaj = NULL, codul $ = 0) Constructorul care inițializează proprietățile codului de mesaj $ și $ - ambele nu sunt necesare. Funcția getMessage finală () Metoda returnează mesajul text conținut în proprietatea $ this-> Mesajul de final getCode funcția () Metoda returnează un cod de excepție numerică stocată în proprietatea $ this-> Cod funcție finală getfile metoda () returnează numele fișierului $ this- > fișier în care a apărut o excepție. Metoda finală funcția getline () returnează numărul liniei $ this-> linie unde a avut loc o excepție. funcția finală getTrace () Metoda returnează o stivă de manipulare a excepțiilor ca o matrice. Metoda finală funcția getTraceAsString () returnează stiva de procesare excepție ca șir. Funcția __toString () suprasarcină metoda __toString magică () Returnează un șir de caractere, atunci când există o încercare de a utiliza obiectul ca un context șir.
Mai jos este codul care va oferi informații detaliate despre excepția de la momentul respectiv:
În funcție de valoarea care ia $ b, săriți va afișa informațiile pentru prima aruncare de instrucțiuni:
Excepție 0. Primul punct de intrare
în fișierul D: \ main \ oop \ 08 \ index.php
pe linia 8
sau pentru al doilea:
Excepție 1. Al doilea punct de intrare
în fișierul D: \ main \ oop \ 08 \ index.php
în linia 14
Astfel, având aceste metode în funcțiune, putem determina întotdeauna exact unde și de ce a apărut excepția și procesarea acesteia.
Apropo:
În cazul în care o excepție nu este prins de orice bloc de declarație de captură, atunci rezultatul va da PHP eroare fatală și se va opri script-ul, care ar preveni acest lucru, este necesar să atribuiți excepții ca handler de eroare: