(PHP 4 >= 4.0.1, PHP 5)
set_error_handler -- Setează o funcție de tratare a erorilor definită de utilizatorSetează o funcție utilizator (error_handler) pentru gestionarea erorilor într-un script. Returnează funcția anterioară de gestiune (dacă există), sau FALSE în cazul unei erori. Această funcție vă permite definirea propriului mod de tratare a erorilor la execuție, de exemplu în aplicații în care este nevoie de refacerea unor date/fișiere când apare o eroare critică, sau este necesară declanșarea unei erori dacă sunt îndeplinite anumite condiții (folosind trigger_error()).
Funcția definită de utilizator trebuie să accepte doi parametri: codul de eroare și un șir de caractere care descrie eroarea. Începând cu versiunea PHP 4.0.2 sunt acceptați încă trei parametri opționali: numele fișierului în care a apărut eroarea, numărul liniei la care s-a produs această eroare și contextul în care ea a apărut (un tablou care indică tabela de simboluri activă în punctul în care a apărut eroarea).
Mai jos este exemplificată tratarea unei excepții interne prin declanșarea erorilor și tratarea lor cu o funcție definită de utilizator:
Exemplu 1. Tratarea erorilor cu ajutorul funcțiilor set_error_handler() și trigger_error()
|
tablou a Array ( [0] => 2 [1] => 3 [2] => foo [3] => 5.5 [4] => 43.3 [5] => 21.11 ) ---- tablou b - o atentionare (b = log(PI) * a) WARNING [1024] Valoarea de la pozitia 2 nu este un numar, se va folosi 0 (zero) Array ( [0] => 2.2894597716988 [1] => 3.4341896575482 [2] => 0 [3] => 6.2960143721717 [4] => 49.566804057279 [5] => 24.165247890281 ) ---- tablou c - eroare ERROR [512] Tablou de intrare incorect, trebuia un tablou de valori NULL ---- tablou d - eroare fatala FATAL [256] log(x) pentru x <= 0 nu este definita, ati folosit: scale = -2.5 Eroare fatala la linia 37 in fisierul /softure/htdocs/test.php, PHP 4.0.6 (Linux) Abandon... 1 |
Este important de reținut că gestionarul standard PHP al erorilor va fi ignorat complet. Setările efectuate de error_reporting() nu vor mai avea nici un efect și va fi apelată doar funcția definită de utilizator. Se poate citi în continuare valoarea curentă setată de error_reporting() pentru folosire adecvată. Trebuie făcută mențiunea că această valoare va fi zero dacă instrucțiunea care a generat eroarea este precedată de operatorul @ de control a erorilor.
De asemenea, trebuie precizat că este responsabilitatea programatorului să apeleze funcția die() dacă este necesar. Dacă funcția de tratare a erorii nu întrerupe explicit execuția, scriptul va continua cu instrucțiunea următoare celei care a generat eroarea.
Mai consultați error_reporting(), restore_error_handler(), trigger_error(), user_error().