(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().