PHP proovige püüdmist Näide: erand & Viga juhendaja käsitlemisel

Lang L: none (table-of-contents):

Anonim

Mis on erand?

Viga on ootamatu programmi tulemus, mida programm ise ei saa hakkama.

Vead lahendatakse programmi parandamisega. Vea näiteks on lõpmatu silmus, mis ei lõpeta kunagi käivitamist.

Erandiks on ootamatu programmi tulemus, millega saab programm ise hakkama.

Erandite hulka kuuluvad faili avamine, mida pole olemas.

Selle erandiga saab hakkama kas faili loomisega või pakkudes kasutajale võimalust faili otsida.

Selles õpetuses saate teada

  • Miks käsitleda erandeid?
  • PHP tõrkeotsing
  • Näidete käitlemisel tekkis viga
  • Vigade ja erandite erinevus
  • Mitu erandit
  • Koodi testimine

Miks käsitleda erandeid?

  • Vältige meie lehtedel ootamatuid tulemusi, mis võivad meie lõppkasutajatele olla väga tüütud või ärritavad
  • Parandage meie rakenduste turvalisust, paljastamata teavet, mida pahatahtlikud kasutajad võivad meie rakenduste ründamiseks kasutada
  • Php-erandeid kasutatakse programmi normaalse voo muutmiseks, kui ilmneb mõni prognoositav viga.

PHP tõrkeotsing

Vea ilmnemisel kuvab PHP sõltuvalt teie konfiguratsiooniseadetest veebibrauseris tõrketeate, mis sisaldab teavet ilmnenud tõrke kohta.

PHP pakub mitmeid võimalusi vigade käsitlemiseks.

Vaatleme kolme (3) tavaliselt kasutatavat meetodit;

  1. Die avaldused - die funktsioon ühendab kaja ja väljumise funktsiooni ühes. See on väga kasulik, kui soovime tõrke ilmnemisel sõnumi väljastada ja skripti käivitamise peatada.
  2. Kohandatud veakäitlejad - need on kasutaja määratletud funktsioonid, mida kutsutakse vea ilmnemisel.
  3. PHP tõrketeade - veateade sõltub teie PHP tõrketeate seadistustest. See meetod on arenduskeskkonnas väga kasulik, kui teil pole aimugi, mis vea põhjustas. Kuvatav teave aitab teil rakendust siluda.

Näidete käitlemisel tekkis viga

Vaatame nüüd mõningaid lihtsaid näiteid vigade käsitsemise rutiinidest.

Oletame, et oleme välja töötanud rakenduse, mis kasutab andmete salvestamiseks tekstifaile. Võiksime enne faili andmete lugemist kontrollida faili olemasolu.

Allolev kood rakendab ülaltoodud näidet.

Eeldades, et olete faili simple_error.php salvestanud kausta phptuts, avage URL http: //localhost/phptuts/simple_error.php

Saad järgmised tulemused

Nagu ülaltoodud tulemustest näha, muudab see meie rakenduse ebaprofessionaalseks ja võib kasutajale tüütu olla.

Muudame ülaltoodud koodi ja kirjutame rakenduse veakäitleja

Eeldades, et olete ülaltoodud koodi salvestanud failina error_handling.php, avage URL http: //localhost/phptuts/error_handling.php

Märkus: hea turvatava on kuvada sõnum ülaltoodud kujul selle asemel, et kuvada sõnumit nagu „Faili ei leitud”.

Vaatame veel ühte näidet, mis kasutab kohandatud veakäitlejat.

Kohandatud veakäitleja seatakse vaikepõhiseks PHP tõrkeotsingu funktsiooniks ja see kuvab põhimõtteliselt vea numbri ja teate.

Allolev kood illustreerib ülaltoodud näite rakendamist

Avage URL http: //localhost/phptuts/custom_error_handler.php. Saate järgmised tulemused

.

Nagu ülaltoodud näitest näha, on kohandatud veakäitlejad selles mõttes võimsad

  • Need võimaldavad meil veateateid kohandada.
  • Kohandatud veakäitleja võib sisaldada ka tõrke logimist faili / andmebaasi, arendaja e-posti saatmist jne.

Vaatame nüüd kolmandat tüüpi veakäsitlust. Kasutame PHP sisseehitatud funktsiooni error_reporting funktsiooni. Sellel on järgmine põhisüntaks

SIIN,

  • “Error_reporting” on PHP vigade aruandluse funktsioon
  • „$ Report_level” on valikuline, seda saab kasutada aruandlustaseme määramiseks. Kui aruandlustaset pole määratud, kasutab PHP vaikevea aruandluse taset, nagu on määratletud failis php.ini.
Aruandlustase Kirjeldus Näide
HOIATUS Kuvab ainult hoiatusteateid. Ei peata skripti täitmist veaaruandlus (E-HOIATUS);
E_NOTICE Kuvab teateid, mis võivad ilmneda programmi tavapärase käivitamise ajal või võivad olla tõrked. veaaruandlus (E_ TEATIS);
E_USER_ERROR Kuvab kasutaja loodud vead, st kohandatud veakäitleja veaaruanne (E_ USER_ERROR);
E_USER_WARNING Kuvab kasutaja loodud hoiatusteateid veaaruandlus (E_USER_WARNING);
E_USER_NOTICE Kuvab kasutaja loodud teated veaaruandlus (E_USER_NOTICE);
E_REMOVERABLE_ERROR Kuvab vead, mis ei ole surmavad ja mida saab kohandatud veakäitlejate abil käsitseda veaaruandlus (E_RECOVERABLE_ERROR);
E_ALL Kuvab kõik vead ja hoiatused veaaruandlus (E_ KÕIK);

Vigade ja erandite erinevus

  • Erandeid visatakse ja need on püütud tabada, samas kui vigu ei saa enam parandada.
  • Erandeid käsitletakse objektile suunatud viisil.

    See tähendab, kui visatakse erand; luuakse erandi objekt, mis sisaldab erandi üksikasju.

Allolevas tabelis on toodud erandiobjekti meetodid

Meetod Kirjeldus Näide
getMessage () Kuvab erandi teate
getMessage();?>
getCode () Kuvab arvukoodi, mis tähistab erandit
getCode();?>
getFile () Kuvab faili nime ja tee, kus erand toimus
getFile();?>
getLine () Kuvab rea numbri, kus erand toimus
getLine();?>
getTrace () Kuvab tagasijooksu massiivi enne erandit
getTrace());?>
getPrevious () Kuvab eelmise erandi enne praegust
getPrevious();?>
getTraceAsString () Kuvab massiivi asemel stringi stringi
getTraceAsString();?>
__toString () Kuvab kogu erandi stringina
__toString();?>

Allpool on erandite viskamise põhisüntaks.

SIIN,

  • "Visata" on märksõna, mida kasutatakse erandi viskamiseks
  • „Uus erand (…)“ loob erandi objekti ja edastab sõnumi parameetriks stringi „See on erandi näide“.

Ülaltoodud kood väljastab järgmise teate.

Vaatame nüüd näidet, mis rakendab viske- ja püüdmiserandeid.

Muudame ülaltoodud näidet ja lisame proovimise, viske ja püüdmise.

Sellel on järgmine põhisüntaks.

SIIN,

  • „Try {…}” on käivitatav koodiplokk, mis võib tekitada erandi
  • „Catch (Exception $ e) {…}” on koodiplokk, mis püüab visatud erandi ja määrab erandi objekti muutujale $ e.

Allolev kood näitab põhilist erandi näidet, kui rakendatud on proovimise, viskamise ja püüdmise erand.

Programm loob tahtlikult erandi, mille ta siis tabab.

getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>

Avage URL http: //localhost/phptuts/exception_handling.php. Saate järgmised tulemused.

Ühe php try lause jaoks on võimalik luua ka mitu erandit, sõltuvalt visatud erandi tüübist.

Vaadake artiklit MySQL, PHP andmetele juurdepääsu kohta

… Mitme erandi rakendamise näidete jaoks

Mitu erandit

Mitu erandit kasutage visatud erandite käsitlemiseks mitut proovimise püüdmisplokki. Mitu erandit on kasulikud, kui;

  • Soovite kuvada kohandatud sõnumit sõltuvalt visatud erandist
  • Soovite teha unikaalse toimingu sõltuvalt visatud erandist

Allolev vooskeem illustreerib mitme erandi toimimist

Vaatame näidet, mis kasutab mitut erandit.

Muudame koodi, mis jagab arvu edastatud nimetajaga.

Eeldame, et esineb kahte tüüpi erandeid;

  • Nulliga jagamine
  • Jagamine negatiivse arvuga

Lihtsuse huvides kuvame eranditüübi ainult oma püüdmisplokkides.

Erandklassi sisseehitatud PHP-d kasutatakse erandite viskamiseks.

Loome kaks klassi, mis laiendavad erandklassi ja kasutavad neid erandite viskamiseks.

Allolev kood näitab rakendust.

Koodi testimine

Oletame, et olete salvestanud multiple_exceptions.php kausta phptuts.

Sirvige URL-i http: //localhost/phptuts/multiple_exceptions.php

Lülitage tagasi PHP-failile ja edastage parameetrina -1, nagu on näidatud järgmisel diagrammil.

Sirvige URL-i http: //localhost/phptuts/multiple_exceptions.php .

Milliseid tulemusi saate? Parameetrina edastage 3.

Milliseid tulemusi saate?

Kokkuvõte

  • Vead on PHP-koodi loodud ootamatud tulemused
  • Veakäsitlus parandab rakenduse jõudlust
  • PHP-s on sisse ehitatud funktsioonid, mida saab kasutada PHP vigadest teatamise viisi kohandamiseks
  • Erandid on nagu vead, kuid viskamisel saab neid püüda kinniploki abil.
  • Veateavet näitavate veateadete kuvamist peetakse halvaks turvatavadeks.