Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Tratarea erorilor in Laravel

by
Difficulty:BeginnerLength:MediumLanguages:

Romanian (Română) translation by C. Dan (you can also view the original English article)

În acest articol, vom explora una dintre cele mai importante și cel mai puțin discutate caracteristici din cadrului framework-ului web Laravel — respectiv tratarea excepției. Laravel vine încorporat cu un mecanism de tratare a excepțiilor (exception handler), care vă va permite să raportați și să interpretați mai ușor excepțiile și într-un mod prietenos.

În prima jumătate a articolului, vom explora setările implicite furnizate de mecanismul de tratare a excepților. De fapt, vom parcurge clasa implicită "Handler", în primul rând pentru a înțelege cum tratează Laravel excepțiile.

În a doua jumătate a articolului, vom merge mai departe și vom vedea cum putem crea un mecanism de tratare a excepțiilor particularizat care va permite captarea excepții particularizate.

Configurarea cerințelor preliminare

Înainte de a merge mai departe pentru a cerceta neîntârziat clasa ”Handler”, haideți să aruncăm o privire la câțiva parametri importanți de configurare raportați la excepții.

In continuare deschideți fișierul config/app.php.  Să aruncăm o privire mai atentă la fragmentul următor.

După cum sugerează și numele, dacă variabila este setată la TRUE, vă va ajuta să depanați erorile generate de aplicație. Valoarea implicită a acestei variabile este setată la valoarea variabilei de mediu APP_DEBUG în fișierul .env.

În mediul de dezvoltare, variabila ar trebui setată la TRUE, astfel încât să puteți urmări cu ușurință erorile și să le remediați. Pe de altă parte, este de dorit dezactivarea acesteia în mediul de producție, iar în acest caz va fi afișată o pagină generică de eroare.

 În plus față de afișarea erorilor, Laravel vă va permite să inregistrați erorile în fișierul jurnal. Haideți să aruncăm o scurtă privire la opțiunile disponibile pentru logare. Incă o dată, deschideți fișierul config/app. php și fiți atenți la următorul fragment.

Deoarece Laravel utilizează pentru logare biblioteca Monolog PHP, ar trebui să setați opțiunile de mai sus în cadrul acelei biblioteci.

Fișierul jurnal implicit se regăsește la storage/logs/laravel.log  și de cele mai multe ori este suficient. Pe de altă parte, variabila APP_LOG_LEVEL este setată la o valoare care indică nivelul de severitate al erorilor care vor fi înregistrate.

Deci, aceasta a fost o introducere de bază la opțiunile de configurare disponibile pentru excepții și pentru logare.

Mergând mai departe, să aruncăm o privire la clasa implicită ”Handler” care este inclusă implicit în aplicația Laravel. Continuați și deschideți fișierul app/Exceptions/Handler.php.

Există două funcții importante pentru care clasa ”Handler” este responsabilă — raportarea și redarea tuturor erorilor.

Să ne uităm mai atent și la metoda report.

Metoda ”report” este utilizată pentru a înregistra erorile în fișierul jurnal. În același timp este important de reținut proprietatea dontReport  care listează toate tipurile de excepții ce nu ar trebui să fie înregistrate.

In continuare, să supunem atenției metoda render.

Dacă metoda report este utilizată pentru a înregistra sau raporta erori, metoda render este utilizată pentru a afișa erorile pe ecran. De fapt, această metodă tratează ce se va afișa utilizatorilor atunci când se produce excepția.

De asemenea, metoda render vă va permite să particularizați un răspuns pentru diferite tipuri de excepții, după vom vedea în secțiunea următoare.

În cele din urmă, metoda unauthenticated tratează excepția AuthenticationException care vă va permite să decideți ce va fi afișat utilizatorilor în cazul în care aceștia sunt neautentificați pentru a accesa o pagină pe care o caută.

Clasa ”Exception” particularizată

În această secțiune, vom crea o clasă de excepție particularizată care tratează excepțiile de tip CustomException. Ideea din spatele creării de clase de excepție particularizate este de a gestiona cu ușurință excepțiile particularizate și de a genera răspunsuri particularizate în același timp.

In continuare creați un fișier  app/Exceptions/CustomException.php cu următorul conținut.

Cel mai important lucru de reținut aici este referitor la clasa CustomException care trebuie să extindă clasa de bază Exception. În scopuri demonstrative, vom discuta doar metoda de randare, dar desigur, ați putea personaliza și metoda ”report”.

După puteți vedea, în cazul nostru utilizatorii sunt redirecționați către pagina de erori errors.custom. În acest fel, aveți posibilitatea să implementați pagini particularizate de eroare  pentru anumite tipuri de excepții.

Desigur, trebuie să creăm un fișier de vizualizare asociat la resources/views/errors/custom.blade.php.

Acesta este un fișier de vizualizare destul de simplu, care afișează un mesaj de eroare, dar desigur, ați putea proiecta-o așa cum doriți să fie.

De asemenea, trebuie să facem modificări în metoda de randare a fișierului app/Exceptions/Handler.php astfel încât clasa noastră personalizată de excepție  să poată fi invocată. Să înlocuim metoda de randare cu următorul conținut din fișierul app/Exceptions/Handler.php.

După cum puteți vedea, se verifică în primul rând tipul de excepție în metoda de randare. Dacă tipul unei excepții este \App\Exceptions\CustomException  apelăm metoda de randare a clasei respective.

Deci acum totul este la locul lui. Să continuăm și să creăm un fișier de control la app/Http/Controllers/ExceptionController.php astfel încât să putem testa clasa noastră particularizată de excepție.

Desigur, aveți nevoie pentru a adăuga o rută asociată în routes/web.php, după cum se vede în următorul fragment de cod.

Având în vedere toate acestea, puteți accesa URL-ul http://your-laravel-site.com/exception/index pentru a vedea dacă functionează conform așteptărilor. Ar trebui să se afișeze view-ul errors.custom ca în configurația noastră.

Deci, acesta e modul în care ar trebui să vă ocupați de excepțiile particulare în Laravel. Și aici am ajuns la sfârșitul acestui articol — sper că v-ați bucurat de el!

Concluzie

Astăzi, am parcurs caracteristica de tratare a excepțiilor în Laravel. La începutul articolului am explorat configurația de bază oferită de Laravel pentru a randa și a raporta excepții. Mai mult, am aruncat o scurtă privire și la clasa implicită de tratare a excepției.

În a doua jumătate a articolului, am pregătit o clasă particularizată de tratare a excepțiilor care a demonstrat modul în care ați putea gestiona excepțiile particularizate din aplicație.

Pentru aceia dintre voi care doar ați început să lucrați cu Laravel sau sunteți în căutarea extinderii cunoștințele dvs., a site-ului sau a aplicației cu extensii, avem o varietate de lucruri pe care le puteți studia în Envato Market.

Mi-ar placea sa aud vești de la dvs, sub forma de intrebări și sugestii!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.