- Introducere PHP
- Instalare si Configurare
- Despre sintaxa PHP
- Varibile PHP
- Constante
- Operatori
- Procesul Decizional
- Instructiuni Repetitive
- Array-uri (Vectori)
- Concepte Web
- Incluziunea fisierelor
- Lucrul cu fisiere
- Functii
- Cookie
- Session
- Trimiterea de mailuri
- File Uploading
- Standarde de Programare
- Metodele GET si POST
- Validarea Formularelor
- Campuri obligatorii
- Variabile Predefinite
- Regular Expressions
- Erori si Exceptii
- Debugging
- Data si Timpul
- Mysqli â Conexiunea la baza de date
- Crearea unei baze de date
- Stergerea unei baze de date
- Inserare date
- Preluare date din MySql
- Stefanescu Mihai a postat in Paginare in PHP
- johhny a postat in Paginare in PHP
- Stefanescu Mihai a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- madalin a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- Stefanescu Mihai a postat in Featureuri site
Erori si Exceptii
Procesul de error handling este procesul de aflare a erorilor programului tau si de rezolvare intr-un mod eficient. Daca acest lucru nu este facut corect poate avea consecinte neprevazute.Folosirea functiei die()
In timp ce scriem programe PHP ar trebuii sa ne gandim si la erori inainte de a junge intr-un stadiu in care este tarziu deja.
Iata un mod in care putem folosi functia die() in cazul in care nu exista fisierul cerut:
<?php if(!file_exists("/tmp/test.txt")){ die("Fisierul nu a fost gasit"); }else{ $file=fopen("/tmp/test.txt","r"); print "Fisierul a fost deschis"; } ?>
In modul acesta puteti scrie un cod eficient. Folosind tehnica de mai sus puteti executia oricarui program de fiecare data cand apare o eroare si puteti afisa un mesaj din care utilizatorul poate intelege ceva.
Functii Custom pentru Error Handling
Puteti scrie prorpriile functii pentru tratarea erorilor. PHP va vine in ajutor cu un framework pentru definirea functiilor pentru tratarea erorilor.
Aceste functii au nevoie de cel putin 2 parametrii (nivelul erorii si mesajul erorii) dar pot primi pana la 5 paremtri(optional: fisier, numarul liniei, context-ul erorii):
Sintaxa
functie_eroare(nivel_eroare,mesaj_eroare, fisier_eroare,linie_eroare,context);
Parametru | Descriere |
nivel_eroare | Necesar – specifica nivelul erorii. Trebuie data o valoare numerica. |
mesaj_eroare | Necesar – specifica mesajul de eroare. |
fisier_eroare | Optional – specifica fisieurl in care a fost generata eroarea. |
linie_eroare | Optional – specifica linia aparitiei erorii |
context | Optional – specifica un array cu fiecare variabila si valoarea ei ce erau folosite atunci cand a aparut eroarea. |
Nivele Eroare
Aceste nivele de eroare sunt diferitele tipuri de erori ce pot sa apara.
Valoare | Constanta | Descriere |
1 | E_ERROR | Eroare de run-time fatala. Executia scriptului este oprita. |
2 | E_WARNING | Eroare de run-time non-fatala. Executia scriptului nu este oprita. |
4 | E_PARSE | Eroare compile-time la parse. Aceste erori sunt generate doar de parser. |
8 | E_NOTICE | Instiintare Run-time.Scriptul a gasit ceva ce s-ar putea sa fie o eroare. |
16 | E_CORE_ERROR | Eroare fatala ce apare la startup-ul initial al PHP-ului. |
32 | E_CORE_WARNING | Eroare de run-time non-fatala ce apare la startup-ul initial al PHP-ului. |
256 | E_USER_ERROR | Eroare fatala generata de utilizator. Aceasta eroare este exact ca si E_ERROR doar ca a fost setata de programator folosind functia trigger_error() |
512 | E_USER_WARNING | Warning non-fatal generat de utilizator. Aceasta este exact ca si E_WARNING doar ca este setat de programator cu functia trigger_error() |
1024 | E_USER_NOTICE | Instiintare generata de utilizator. Aceasta este exact ca si E_NOTICE doar ca este setat de programator cu functia trigger_error() |
2048 | E_STRICT | Instiintare Run-time. Activat sugereaza schimbari in cod pentru o mia buna interoperabilitate. |
4096 | E_RECOVERABLE_ERROR | Acest nivel este ca si E_ERROR doar ca poate fi prins cu un handle definit de user(vezi set_error_handler()) |
8191 | E_ALL | Toate erorile si warning-urile cu exceptia E_STRICT (E_STRICT va face parte din E_ALL incepand cu PHP 6.0) |
Toate nivelele de eroare de mai sus pot fi folosite cu ajutorul functiei specia create pentru asa ceva.
int error_reporting ( [int $nivel] )
Iata si un exemplu de functie care sa se ocupe de erori:
<?php function afisare_erori($err_no, $err_msg,$error_file,$error_line) { echo "<b>Error:</b> {$err_no} {$err_msg} - {$error_file} : {$error_line}"; echo "<br />"; echo "Oprire script PHP!"; die(); } ?>
O data definita functia de procesat erorile trebuie sa o setam in libraria PHP folosind functia set_error_handler. Acum hai sa ne uitam la acest exemplu ce apeleaza o functie ce nu exista.
<?php function afisare_erori($err_no, $err_msg,$error_file,$error_line) { echo "<b>Error:</b> {$err_no} {$err_msg} - {$error_file} : {$error_line}"; echo "<br />"; echo "Oprire script PHP!"; die(); } //setare functie eroare set_error_handler("afisare_erori"); //eroare myFunction(); ?>
Exceptions Handling:
PHP 5are un model de exceptii similar cu al altor limbaje. Exceptiile sunt importante pentru ca ne dau un control mai mare asupra erorilor.
Cand discutam despre exceptii discutam despre urmatoarele cuvinte cheie:
- Try – O functie ce primeste o exceptie trebuie sa fie pusa intr-un block “try”. Daca exceptia nu este pornita codul va rula in mod normal, dar daca este pornita va fi “aruncata”(throw) o exceptie.
- Throw – Asa pornesti o exceptie. Fiecare Throw trebuie sa aiba un catch.
- Catch – -Un block “catch” “prinde” exceptia si creeaza un obiect cu informatiile acesteia.
Cand o exceptie este aruncata, codul ce urmeaza dupa ea nu va mai rula, iar PHP-ul va cauta primul bloc catch. Daca nu este gasit catch-ul si exceptia nu este “prinsa” PHP-ul va genera o eroare fatala cu mesajul “Uncaught Exception”.
Iata un exemplu:
<?php try { $error = 'Mereu arunca aceasta eroare'; throw new Exception($error); // Acest cod nu va mai fi executat echo 'Nu este executat'; } catch (Exception $e) { echo 'Exceptie prinsa: ', $e->getMessage(), "\n"; } // Cod executat echo 'Salut!'; ?>
In exemplul de mai sus folosim functia $e->getMessage() pentru a prelua mesajul de eroare. Clasa Exception ne pune la dispozitie urmatoarele functii.
- getMessage()- mesajul exceptiei
- getCode() – codul exceptiei
- getFile() – fisierul sursa
- getLine() – linia
- getTrace() – un array de backtrace()
- getTraceAsString() – un string formatat de trace
Exceptii Custom
Va puteti definii propriile functii pentru exceptii precum in exemplul de mai jos:
<?php function exception_handler($exception) { echo "Exceptie de prinsa: " , $exception->getMessage(), "\n"; } set_exception_handler('exception_handler'); throw new Exception('Exceptie ne prinsa'); echo "Cod ce nu este executat\n"; ?>
Comentarii
Inca nu au fost postate comentarii, fii primul care posteaza un comentariu!