Hibakezelés
A PHP nyelvben felmerülő programozói hibák, melyeket mi okozhatunk és azoknak kezelésük.
- Főoldal
/
- Kurzusok
/
- Webfejlesztés
/
- PHP
/
- PHP kezdőknek
Hibakezelés
A PHP nyelv által nyújtott szabadságból illetően a hibákkal szemben is eléggé elnéző.
Két fajta hibát különböztethetünk meg: kritikus és nem kritikus
A leggyakoribb nem kritikus hibák a következőek:
- Ha betöltünk egy fájlt ami nem létezik kapunk egy felhívást
- Ha kiírunk egy változót amely nem létezik, akkor üres értéket ad és kapunk egy felhívást
- Ha egy tömbben akarunk használni egy nem létező elemet, kapunk egy felhívást
- Ha egy olyan változónak adunk értéket, amely nem volt létrehozva, gond nélkül létrehozza
- Ha egy függvény 2 segédparamétert vár, mi ennél többet adunk át, semmi gond nem történik
- ... és még sorolhatnánk párat
Kinézet:
Ebből kifolyólag kevés olyan eset van, amikor a PHP egy hiba miatt megáll, ezek a Fatális (Fatal, végrehajthatatlan) hibák. Ebben az esetben kapun egy Fatal errort és a program futása megáll.
A kritikus hibák keletkeznek:
- amikor olyan feladatot akarunk végrehajtani amit lehetetlen, pl. nem létezik egy függvény, vagy egy osztály
- kötelezően be akartunk tölteni egy fájlt, amely nem található
Kinézet:
Sok programozó azokat a hiba üzeneteket kikapcsolja (ne jelenjenek meg), amelyek nélkül a program képes működni és ezért csak zavarna a sok felhívás az oldalon.
Kérdezzük mi, ez jó ötlet? Nem baj ha akarunk használni valamit ami nem létezik? Nincs otthon csokoládénk, de azért még is megettünk 1 táblával?
Szerintünk ez helytelen! Ahhoz hogy biztosra úgy működjön a kód, ahogy mi szeretnénk, nem szabad semmiféle felhívás vagy hiba legyen benne! Kikapcsolni a hibaüzeneteket meg nem érdemes, legalább is addig amíg a fejlesztés tart!
A hibaüzenetek megjelenítésének bekapcsolásához (ha alapból ki van kapcsolva) az alábbi kódrészletet kell beírjuk a PHP fájlunk soraiba, lehetőleg az elejére, hogy minden hibát ki tudjon jelezni:
<?php
// Beállítjuk, hogy mindenféle hibaüzenetet jelenítsen meg
error_reporting( E_ALL );
// Beállítjuk, hogy jelenítse is meg a hibákat
ini_set( "display_errors", "On" );
?>
A hibákat amelyeket a rendszer íly módon jelez számunkra, nagyon könnyen javíthatjuk, és ha odafigyelünk, akkor nem okozunk egyet sem. Ez lenne a cél!
A Fatal error hibákat is elkaphatjuk (kezelhetjük), hogy az oldalunk ne akadjon ki, ne írja ki, hogy Fatal error, és hogy a támadókkal szembben ne közöljön semmiféle információt, amit nem kellene.
Ehhez a hiba elkapáshoz használhatjuk a try, catch parancsokat. Nevükből adodóan a try parancs esetében, a rendszer meg próbálja végrehajtani az adott feladatot vagy feladatokat, és ha nem sikerül, akkor a catch ágon fog kikötni, ahol lehetőségünk van írni egy szép hibaüzenetet, vagy akár mindent elnyelni.
<?php
// Megpróbáljuk végrehajtani a feladatokat
try
{
// Végrehajtandó feladatok
}
// Hiba esetén kerülünk ide
catch( Exception $e )
{
// Ha nem sikerült akkor mi történjen, pl. mentsük a rendszerben az adminisztrátorok számára,
// az oldalra meg kiírjuk, hogy: Sajnáljuk, a rendszer jelenjel nem elérhető.
}
?>
Jelen esetben az Exception osztály mindenféle hibát el kap. Ebből létezik többféle kivétel kezelés is, és mi is könnyedén létrehozhatunk sajátokat. Pl. ha különböző hibák esetén különböző dolgokat szeretnénk végrehajtani, több catch ágat kell írnunk:
<?php
// Megpróbáljuk végrehajtani a feladatokat
try
{
// Végrehajtandó feladatok
}
// Hiba esetén kerülünk ide
catch( NullPointerException $e )
{
// Amikor egy tömbben nem létezik egy adott index
}
catch( FileNotFoundException $e )
{
// Amikor hiányzik egy fájl
}
// Hiba esetén kerülünk ide
catch( Exception $e )
{
// Minden egyéb hiba
}
?>
Ha nem akarjuk az összes hibát el kapni, akkor az utolsó catch-t amely a teljes Exception-t tartalmazza, nem muszáj odaírjuk.
- Előző lecke: Objektumok, Osztályok
Részletek
- Megtekintve: 219
- Haszontalannak jelölve: 0
- Hasznosnak jelölve: 0
- Értékelés: