PHP Próbálja ki a fogást: Kivétel & Hiba az oktatóanyag kezelésében

Tartalomjegyzék:

Anonim

Mi az a kivétel?

A hiba egy váratlan programeredmény, amelyet maga a program nem tud kezelni.

A hibákat a program javításával oldják meg. A hibára példa lehet egy végtelen ciklus, amely soha nem hagyja abba a végrehajtást.

Kivételt képez a váratlan programeredmény, amelyet maga a program kezelhet.

Példák a következőkre: nem létező fájl megnyitása.

Ez a kivétel kezelhető úgy, hogy létrehozza a fájlt, vagy felajánlja a felhasználónak a fájl keresésének lehetőségét.

Ebben az oktatóanyagban megtanulja-

  • Miért kell kezelni a kivételt?
  • PHP hibakezelés
  • Hiba a példák kezelésében
  • Különbség a hibák és a kivétel között
  • Több kivétel
  • A kód tesztelése

Miért kell kezelni a kivételt?

  • Kerülje az olyan váratlan eredményeket az oldalakon, amelyek nagyon idegesítőek vagy irritálóak lehetnek a végfelhasználók számára
  • Javítsa alkalmazásaink biztonságát azáltal, hogy nem tárja fel azokat az információkat, amelyeket a rosszindulatú felhasználók felhasználhatnak az alkalmazások megtámadására
  • A Php kivételek a program normál folyamatának megváltoztatására szolgálnak, ha bármilyen kiszámítható hiba lép fel.

PHP hibakezelés

Ha hiba lép fel, a konfigurációs beállításoktól függően a PHP megjeleníti a hibaüzenetet a webböngészőben, a hibával kapcsolatos információkkal.

A PHP számos lehetőséget kínál a hibák kezelésére.

Három (3) általánosan használt módszert vizsgálunk meg;

  1. Die utasítások - a die függvény egyesíti az echo és a exit funkciót. Nagyon hasznos, ha üzenetet akarunk kiadni és hiba esetén le akarjuk állítani a parancsfájl végrehajtását.
  2. Egyéni hibakezelők - ezek a felhasználó által definiált függvények, amelyeket hiba esetén hívnak meg.
  3. PHP hibajelentés - a hibaüzenet a PHP hibajelentési beállításaitól függ. Ez a módszer nagyon hasznos a fejlesztői környezetben, amikor még nem tudja, mi okozta a hibát. A megjelenített információk segíthetnek az alkalmazás hibakeresésében.

Hiba a példák kezelésében

Most nézzünk meg néhány egyszerű példát a hibakezelési rutinokkal.

Tegyük fel, hogy kifejlesztettünk egy alkalmazást, amely szöveges fájlokat használ az adatok tárolására. Érdemes ellenőriznünk a fájl létezését, mielőtt megpróbálnánk adatokat olvasni belőle.

Az alábbi kód a fenti példát valósítja meg.

Feltéve, hogy a simple_error.php fájlt a phptuts mappába mentette, nyissa meg az URL címet : http: //localhost/phptuts/simple_error.php

A következő eredményeket kapja

Amint a fenti eredményekből látható, az alkalmazásunk szakszerűtlennek tűnik, és bosszantó lehet a felhasználó számára.

Módosítjuk a fenti kódot, és írunk egy hibakezelőt az alkalmazáshoz

Feltéve, hogy a fenti kódot error_handling.php fájlként mentette, nyissa meg az URL címet : http: //localhost/phptuts/error_handling.php

Megjegyzés: jó biztonsági gyakorlat, ha egy üzenetet a fentiek szerint jelenít meg, ahelyett, hogy a „Fájl nem található” üzenetet jelenítené meg.

Nézzünk meg egy másik példát, amely egyedi hibakezelőt használ.

Az egyéni hibakezelő alapértelmezett PHP hibakezelő funkcióként lesz beállítva, és alapvetően hibaszámot és üzenetet jelenít meg.

Az alábbi kód szemlélteti a fenti példa megvalósítását

Nyissa meg az URL címet : http: //localhost/phptuts/custom_error_handler.php a következő eredményeket kapja

.

Amint a fenti példából látható, az egyéni hibakezelők ebben az értelemben nagy teljesítményűek

  • Lehetővé teszik a hibaüzenetek testreszabását.
  • Az egyéni hibakezelő tartalmazhat hibanaplózást egy fájlba / adatbázisba, e-mailt a fejlesztőnek stb.

Most nézzük meg a harmadik típusú hibakezelést. A beépített PHP-ben a hiba_jelentés funkciót fogjuk használni. A következő alapvető szintaxissal rendelkezik

ITT,

  • A „error_reporting” a PHP hibajelentési funkció
  • A „$ report_level” opcionális, használható a jelentési szint beállítására. Ha nincs megadva jelentési szint, akkor a PHP az alapértelmezett hibajelentési szintet használja, amint az a php.ini fájlban meg van határozva.
Jelentési szint Leírás Példa
FIGYELEM Csak figyelmeztető üzeneteket jelenít meg. Nem állítja le a szkript végrehajtását hibajelentés (E-FIGYELMEZTETÉS);
E_NOTICE Megjelenítéseket jelenít meg, amelyek előfordulhatnak a program normál végrehajtása során, vagy hibák lehetnek. hibajelentés (E_ ÉRTESÍTÉS);
E_USER_ERROR Megjeleníti a felhasználó által generált hibákat, azaz az egyedi hibakezelőket hibajelentés (E_ USER_ERROR);
E_USER_WARNING Megjeleníti a felhasználó által generált figyelmeztető üzeneteket hibajelentés (E_USER_WARNING);
E_USER_NOTICE A felhasználó által generált értesítéseket jeleníti meg hibajelentés (E_USER_NOTICE);
E_RECOVERABLE_ERROR Olyan hibákat jelenít meg, amelyek nem végzetesek és egyedi hibakezelőkkel kezelhetők hibajelentés (E_RECOVERABLE_ERROR);
E_ALL Minden hibát és figyelmeztetést megjelenít hibajelentés (E_ ALL);

Különbség a hibák és a kivétel között

  • A kivételeket el kell dobni, és meg akarják fogni, míg a hibákat általában nem lehet helyrehozni.
  • A kivételeket objektum-orientált módon kezeljük.

    Ez azt jelenti, ha kivételt vetnek; létrehoz egy kivétel objektumot, amely tartalmazza a kivétel részleteit.

Az alábbi táblázat a kivételobjektum-módszereket mutatja be

Módszer Leírás Példa
getMessage () Megjeleníti a kivétel üzenetét
getMessage();?>
megkapni a kódot() Megjeleníti a kivételt képviselő numerikus kódot
getCode();?>
getFile () Megjeleníti a fájl nevét és elérési útját, ahol a kivétel történt
getFile();?>
getLine () Megjeleníti a sor számát, ahol a kivétel történt
getLine();?>
getTrace () A kivétel előtti tömböt jeleníti meg
getTrace());?>
getPrevious () Megjeleníti az előző kivételt az aktuális előtt
getPrevious();?>
getTraceAsString () Tömb helyett karakterláncként jeleníti meg a kivétel visszamenőleges nyomát
getTraceAsString();?>
__toString () A teljes kivételt stringként jeleníti meg
__toString();?>

Az alábbiakban bemutatjuk a kivétel dobásának alapvető szintaxisát.

ITT,

  • A „dobás” az a kulcsszó, amelyet a kivétel eldobására használnak
  • Az „new Exception (…)” kivételobjektumot hoz létre, és az „Ez egy kivételes példa” karakterláncot adja át üzenetparaméterként.

A fenti kód a következő üzenetet adja ki.

Most egy olyan példát fogunk megvizsgálni, amely a dobás és elkapás kivételeket valósítja meg.

Módosítjuk a fenti példát, és belefoglaljuk a próbálkozást, a dobást és a fogást.

A következő alapvető szintaxissal rendelkezik.

ITT,

  • A „try {…}” a végrehajtandó kód blokkja, amely kivételt jelenthet
  • A „catch (Exception $ e) {…}” az a kódblokk, amely befogja a dobott kivételt, és a kivétel objektumot hozzárendeli az $ e változóhoz.

Az alábbi kód bemutatja az alapvető kiviteli példát a try, dobás és elkapás kivétellel.

A program szándékosan vet egy kivételt, amelyet aztán elkap.

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

Nyissa meg az URL címet : http: //localhost/phptuts/exception_handling.php A következő eredményeket kapja.

Lehetőség van több kivétel létrehozására is egy php try utasításhoz, a dobott kivétel típusától függően.

Lásd a MySQL, PHP adatelérés című cikket

… A kivételek megvalósítási példáihoz

Több kivétel

Több kivétel esetén használjon több próbálkozási blokkot a dobott kivételek kezeléséhez. Több kivétel akkor hasznos, ha;

  • Testreszabott üzenetet szeretne megjeleníteni a dobott kivétel függvényében
  • Egyedi műveletet szeretne végrehajtani a dobott kivétel függvényében

Az alábbi folyamatábra szemlélteti a több kivétel működését

Nézzünk meg egy példát, amely több kivételt használ.

Módosítjuk azt a kódot, amely elosztja a számot az átadott nevezővel.

Kétféle kivétel előfordulására számítunk;

  • Osztás nullával
  • Osztás negatív számmal

Az egyszerűség kedvéért csak a kivétel típusát jelenítjük meg a fogási blokkjainkban.

A Kivétel osztályba épített PHP a kivételeket dobja.

Létrehozunk két osztályt, amelyek kibővítik a kivétel osztályt, és felhasználják őket a kivételek megdobására.

Az alábbi kód a megvalósítást mutatja.

A kód tesztelése

Feltételezzük, hogy a multiple_exceptions.php fájlt a phptuts mappába mentette.

Keresse meg az URL címet : http: //localhost/phptuts/multiple_exceptions.php

Váltson vissza a PHP fájlra, és adja meg a -1 értéket paraméterként az alábbi ábra szerint.

Keresse meg a http: //localhost/phptuts/multiple_exceptions.php URL-t .

Milyen eredményeket ér el? Adja meg a 3. paramétert.

Milyen eredményeket ér el?

Összegzés

  • A hibák a PHP-kód által előállított váratlan eredmények
  • A hibakezelés javítja az alkalmazás teljesítményét
  • A PHP beépített funkciókat tartalmaz, amelyek testreszabhatók a PHP hibabejelentésének módjában
  • A kivételek olyanok, mint a hibák, de dobáskor megfoghatók a fogási blokk használatával.
  • A hibainformációkat megjelenítő hibaüzenetek rossz biztonsági gyakorlatnak minősülnek.