Kas ir izņēmums?
Kļūda ir negaidīts programmas rezultāts, kuru pati programma nevar apstrādāt.
Kļūdas tiek novērstas, novēršot programmu. Kļūdas piemērs būtu bezgalīga cilpa, kas nekad nebeidz izpildīt.
Izņēmums ir negaidīts programmas rezultāts, ar kuru var rīkoties pati programma.
Izņēmumu piemēri ietver mēģinājumu atvērt failu, kas neeksistē.
Šo izņēmumu var apstrādāt, vai nu izveidojot failu, vai arī piedāvājot lietotājam iespēju meklēt failu.
Šajā apmācībā jūs uzzināsiet
- Kāpēc rīkoties ar izņēmumu?
- PHP kļūdu apstrāde
- Kļūda, apstrādājot piemērus
- Atšķirība starp kļūdām un izņēmumu
- Vairāki izņēmumi
- Notiek koda pārbaude
Kāpēc rīkoties ar izņēmumu?
- Izvairieties no negaidītiem rezultātiem mūsu lapās, kas mūsu gala lietotājiem var būt ļoti kaitinoši vai kairinoši
- Uzlabojiet mūsu lietojumprogrammu drošību, neatklājot informāciju, kuru ļaunprātīgi lietotāji var izmantot, lai uzbruktu mūsu lietojumprogrammām
- Php izņēmumi tiek izmantoti, lai mainītu normālu programmas plūsmu, ja rodas kāda paredzama kļūda.
PHP kļūdu apstrāde
Kad rodas kļūda, atkarībā no konfigurācijas iestatījumiem PHP tīmekļa pārlūkprogrammā parāda kļūdas ziņojumu ar informāciju par radušos kļūdu.
PHP piedāvā vairākus veidus, kā rīkoties ar kļūdām.
Mēs aplūkosim trīs (3) parasti izmantotās metodes;
- Die die - die funkcija apvieno atbalss un izejas funkciju vienā. Tas ir ļoti noderīgi, ja mēs vēlamies izdot ziņojumu un apturēt skripta izpildi, kad rodas kļūda.
- Pielāgoti kļūdu apstrādātāji - tās ir lietotāja definētas funkcijas, kuras tiek izsauktas ikreiz, kad rodas kļūda.
- PHP kļūdu ziņošana - kļūdas ziņojums atkarībā no jūsu PHP kļūdu ziņošanas iestatījumiem. Šī metode ir ļoti noderīga izstrādes vidē, kad jums nav ne jausmas, kas izraisīja kļūdu. Parādītā informācija var palīdzēt atkļūdot lietojumprogrammu.
Kļūda, apstrādājot piemērus
Apskatīsim dažus vienkāršus piemērus ar kļūdu apstrādes kārtību.
Pieņemsim, ka esam izstrādājuši lietojumprogrammu, kas datu glabāšanai izmanto teksta failus. Mēs varētu vēlēties pārbaudīt faila esamību, pirms mēģinām nolasīt no tā datus.
Zemāk esošais kods īsteno iepriekš minēto piemēru.
Pieņemot, ka failu simple_error.php esat saglabājis mapē phptuts, atveriet vietrādi URL http: //localhost/phptuts/simple_error.php
Jūs saņemsiet šādus rezultātus
Kā redzat no iepriekš minētajiem rezultātiem, tas mūsu lietojumprogrammu padara neprofesionālu un var būt kaitinošs lietotājam.
Mēs pārveidosim iepriekš minēto kodu un uzrakstīsim lietojumprogrammai kļūdu apstrādātāju
Pieņemot, ka iepriekš minēto kodu esat saglabājis kā error_handling.php, atveriet vietrādi URL http: //localhost/phptuts/error_handling.php
Piezīme: laba drošības prakse ir parādīt ziņojumu, kā parādīts iepriekš, nevis parādīt ziņojumu, piemēram, “Fails nav atrasts”.
Apskatīsim citu piemēru, kurā tiek izmantots pielāgots kļūdu apstrādātājs.
Pielāgotais kļūdu apstrādātājs tiks iestatīts kā noklusējuma PHP kļūdu apstrādes funkcija, un būtībā tas parādīs kļūdas numuru un ziņojumu.
Zemāk redzamais kods ilustrē iepriekš minētā piemēra ieviešanu
Atveriet vietrādi URL http: //localhost/phptuts/custom_error_handler.php. Jūs saņemsiet šādus rezultātus
.
Kā redzams no iepriekš minētā piemēra, pielāgoto kļūdu apstrādātāji šajā ziņā ir spēcīgi
- Tie ļauj mums pielāgot kļūdu ziņojumus.
- Pielāgoto kļūdu apstrādātājs var iekļaut arī kļūdu reģistrēšanu failā / datu bāzē, izstrādātāja nosūtīšanu pa e-pastu utt.
Tagad aplūkosim trešo kļūdu apstrādes veidu. Mēs izmantosim PHP iebūvēto funkciju error_reporting. Tam ir šāda pamata sintakse
ŠEIT,
- “Error_reporting” ir PHP kļūdu ziņošanas funkcija
- “$ Report_level” nav obligāts, to var izmantot, lai iestatītu pārskatu līmeni. Ja nav norādīts pārskatu līmenis, PHP izmantos noklusējuma kļūdu ziņošanas līmeni, kā norādīts failā php.ini.
Pārskatu līmenis | Apraksts | Piemērs |
---|---|---|
BRĪDINĀJUMS | Parāda tikai brīdinājuma ziņojumus. Neaptur skripta izpildi | kļūda_ziņošana (E_WARNING); |
E_NOTICE | Parāda paziņojumus, kas var rasties normālas programmas izpildes laikā vai var būt kļūda. | error_reporting (E_ PAZIŅOJUMS); |
E_USER_EREROR | Parāda lietotāju radītas kļūdas, ti, pielāgotu kļūdu apstrādātāju | kļūdu ziņošana (E_ USER_ERROR); |
E_USER_WARNING | Parāda lietotāju ģenerētus brīdinājuma ziņojumus | kļūdu ziņošana (E_USER_WARNING); |
E_USER_NOTICE | Parāda lietotāju ģenerētus paziņojumus | kļūdu ziņošana (E_USER_NOTICE); |
E_RECOVERABLE_ERROR | Parāda kļūdas, kas nav letālas un kuras var novērst, izmantojot pielāgotus kļūdu apstrādātājus | kļūdu ziņošana (E_RECOVERABLE_ERROR); |
E_ALL | Parāda visas kļūdas un brīdinājumus | kļūda_ziņošana (E_ ALL); |
Atšķirība starp kļūdām un izņēmumu
- Izņēmumi tiek izmesti un ir paredzēti, lai tos noķertu, kamēr kļūdas parasti nav iespējams atgūt.
-
Izņēmumi tiek apstrādāti objektorientētā veidā.
Tas nozīmē, kad tiek izmests izņēmums; tiek izveidots izņēmuma objekts, kurā ir informācija par izņēmumu.
Zemāk esošajā tabulā ir parādītas izņēmuma objekta metodes
Metode | Apraksts | Piemērs |
---|---|---|
getMessage () | Parāda izņēmuma ziņojumu |
getMessage();?> |
iegūt kodu() | Parāda ciparu kodu, kas apzīmē izņēmumu |
getCode();?> |
getFile () | Parāda faila nosaukumu un ceļu, kurā radās izņēmums |
getFile();?> |
getLine () | Parāda līnijas numuru, kurā radās izņēmums |
getLine();?> |
getTrace () | Parāda atkāpes masīvu pirms izņēmuma |
getTrace());?> |
getPrevious () | Parāda iepriekšējo izņēmumu pirms pašreizējā |
getPrevious();?> |
getTraceAsString () | Masīva vietā parāda virknes aizmuguri kā virkni |
getTraceAsString();?> |
__toString () | Parāda visu izņēmumu kā virkni |
__toString();?> |
Zemāk ir galvenā sintakse, lai izmestu izņēmumu.
ŠEIT,
- “Mest” ir atslēgvārds, ko izmanto izņēmuma izdarīšanai
- “New Exception (…)” izveido izņēmuma objektu un kā ziņojuma parametru nodod virkni “Šis ir izņēmuma piemērs”.
Iepriekš minētais kods izsūta šādu ziņojumu.
Tagad mēs aplūkosim piemēru, kas īsteno metienu un noķeršanas izņēmumus.
Mēs pārveidosim iepriekš minēto piemēru un iekļausim mēģinājumu, metienu un ķeršanu.
Tam ir šāda pamata sintakse.
ŠEIT,
- “Try {…}” ir izpildāms koda bloks, kas potenciāli var izraisīt izņēmumu
- “Catch (Exception $ e) {…}” ir koda bloks, kas uztver izmesto izņēmumu un piešķir izņēmuma objektu mainīgajam $ e.
Zemāk redzamais kods parāda pamata izņēmuma piemēru ar izmēģinājuma, metiena un ķeršanas izņēmumu.
Programma apzināti met izņēmumu, kuru pēc tam uztver.
getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>
Atveriet vietrādi URL http: //localhost/phptuts/exception_handling.php Jūs saņemsiet šādus rezultātus.
Vienam php try paziņojumam ir iespējams izveidot arī vairākus izņēmumus atkarībā no izmestā izņēmuma veida.
Skatiet rakstu par MySQL, PHP piekļuvi datiem
... vairāku izņēmumu ieviešanas piemēriemVairāki izņēmumi
Vairāki izņēmumi izmanto vairākus izmēģinājuma ķeršanas blokus, lai apstrādātu izmestos izņēmumus. Vairāki izņēmumi ir noderīgi, ja;
- Jūs vēlaties parādīt pielāgotu ziņojumu atkarībā no izmestā izņēmuma
- Jūs vēlaties veikt unikālu darbību atkarībā no izmestā izņēmuma
Zemāk esošā blokshēma parāda, kā darbojas vairāki izņēmumi
Apskatīsim piemēru, kurā izmantoti vairāki izņēmumi.
Mēs pārveidosim kodu, kas numuru dala ar nodoto saucēju.
Mēs sagaidām divu veidu izņēmumus;
- Dalīšana ar nulli
- Dalīšana ar negatīvu skaitli
Vienkāršības labad izņēmuma veidu parādīsim tikai savos nozvejas blokos.
PHP, kas iebūvēts Exception klasē, tiek izmantots, lai izmestu izņēmumus.
Mēs izveidosim divas klases, kas paplašinās izņēmuma klasi un izmantos tās, lai izmestu izņēmumus.
Zemāk redzamais kods parāda ieviešanu.
Notiek koda pārbaude
Pieņemsim, ka esat saglabājis multiple_exceptions.php mapē phptuts.
Pārlūkojiet līdz vietrādim URL: http: //localhost/phptuts/multiple_exceptions.php
Pārslēdzieties atpakaļ uz PHP failu un nododiet -1 kā parametru, kā parādīts šajā diagrammā.
Pārlūkojiet līdz vietrādim URL http: //localhost/phptuts/multiple_exceptions.php .
Kādus rezultātus jūs saņemat? Pass 3 kā parametrs.
Kādus rezultātus jūs saņemat?
Kopsavilkums
- Kļūdas ir negaidīti rezultāti, ko rada PHP kods
- Kļūdu apstrāde uzlabo lietojumprogrammas veiktspēju
- PHP ir iebūvētas funkcijas, kuras var izmantot, lai pielāgotu veidu, kā PHP ziņo par kļūdām
- Izņēmumi ir kā kļūdas, taču tos var noķert, izmantojot iemetiena bloku, kad tos iemet.
- Kļūdu ziņojumu parādīšana, kas parāda informāciju par kļūdām, tiek uzskatīta par sliktu drošības praksi.