home 2024. október 06., Brúnó napja
Online előfizetés
PHP-hibakezelés (1.)
Erdsoft
2019.09.18.
PHP-hibakezelés (1.)

Mai leckénkben a PHP hibakezelő funkcióival ismerkedhetsz meg, hiszen minden óvatosság ellenére előfordulhat, hogy hiba csúszik a kódba. Megesik, hogy az alkalmazás nem úgy fut, ahogyan kellene, és hiba lép fel.

A hibák kezelése

Aki dolgozik, az hibázik is. A PHP világában viszont nem csak a programozó hibáit értjük ezen. Gyakori hibaokok a következők:

  • A szerveren nincs elég tárhely.
  • A felhasználó érvénytelen értéket vitt be az űrlap mezőjébe.
  • A fájl vagy adatbázis, melyet el szeretnénk érni, nem létezik.
  • Az alkalmazásnak nincs engedélye rá, hogy fájlt hozzon létre.
  • A szolgáltatás, melyhez az alkalmazásnak hozzá kell férnie, ideiglenesen nem érhető el.

Az ilyen típusú hibákat futásidejű hibáknak nevezzük, mert akkor lépnek fel, amikor a script fut. Fontos megkülönböztetni őket a szintaxishibáktól, melyeket még a script futtatása előtt el kell hárítani.

Egy professzionális alkalmazás képes kell hogy legyen az ilyen futásidejű hibák elegáns kezelésére. Vagyis világosan és precízen kell informálnia a felhasználót a problémáról.

A hibaszintek megértése

Általában amikor egy hiba megakadályozza a script helyes futtatását, a PHP-motor hibát jelez. Minden hibát egy egész szám és egy hozzárendelt állandó jelöl. A következő táblázatban bemutatjuk a leggyakoribb hibaszinteket:

Hibaszint

Érték

Leírás

E_ERROR

1

Egy végzetes futásidejű hiba, mely nem helyreállítható. A script futtatása azonnal leáll.

E_WARNING

2

Futásidejű figyelmeztetés, mely nem végzetes. A legtöbb hiba ebbe a kategóriába sorolható. A script futtatása nem áll le.

E_NOTICE

8

Futásidejű értesítés, mely arra utal, hogy a script valami olyannal találkozott, ami lehet hiba is, de ilyen helyzet akkor is előfordulhat, amikor a script normálisan fut.

E_USER_ERROR

256

Végzetes, felhasználó által okozott hibaüzenet. Olyan, mint az E_ERROR, azzal a különbséggel, hogy ezt a PHP-script a trigger_error() funkció segítségével generálja, nem a PHP-motor segítségével.

E_USER_WARNING

512

Nem végzetes, felhasználó által okozott figyelmeztető üzenet. Olyan, mint az E_WARNING, azzal a különbséggel, hogy ezt a PHP-script a trigger_error() funkció segítségével generálja, nem a PHP-motor segítségével.

E_USER_NOTICE

1024

Felhasználó által okozott értesítő üzenet. Olyan, mint az E_NOTICE, azzal a különbséggel, hogy ezt a PHP-script a trigger_error() funkció segítségével generálja, nem a PHP-motor segítségével.

E_STRICT

2048

Nem egy szigorú értelemben vett hiba, de felugrik minden alkalommal, amikor a PHP olyan kóddal találkozik, amely gondot okozhat vagy inkompatibilitásokat továbbíthat.

E_ALL

8191

Minden hiba és figyelmeztetés a PHP 5.4.0. előtt, az E_STRICT kivételével.

 

A PHP-motor minden alkalommal feldobja a hibát, amikor problémás résszel találkozik a scriptben, de te is készíthetsz olyan hibaüzeneteket, amelyek sokkal inkább felhasználóbarátok. Egy saját hibaüzenettel sokkal kifinomultabb lesz az alkalmazás.

Alapvető hibakezelés a die() funkció segítségével

A magyarázatot egy példával kezdjük — vegyünk egy egyszerű esetet, melyben megpróbálunk megnyitni egy szöveges fájlt, kizárólag olvasásra.

PHP-kód:

<?php

// Megpróbálunk megnyitni egy nem létező fájlt

$file = fopen('sample.txt', 'r');

?>

Ha a fájl nem létezik, ilyen hibaüzenetet kapunk:

Warning: fopen(sample.txt) [function.fopen]: failed to open stream: No such file or directory in C:\wamp\www\project\test.php on line 2

Elég azonban néhány egyszerű lépést követni, hogy a felhasználóink ne ilyen üzenettel találkozzanak — hiszen, valljuk be, egy átlagos netező ebből nem sokat fog érteni.

PHP-kód:

<?php

If(file_exists('sample.txt')){

    $file = fopen('sample.txt', 'r');

}

else{

    die('Hiba: Az elérni kívánt fájl nem létezik.');

}

?>

Ha lefuttatjuk a fenti scriptet, ezt a hibaüzenetet kapjuk:

Hiba: Az elérni kívánt fájl nem létezik.

Ahogy a példánk is illusztrálja, azzal, hogy egyszerűen ellenőrizzük, létezik-e a fájl, olyan hibaüzenetet generálhatunk, amely sokkal többet mond az átlagos felhasználónak.

A die() funkció a fenti példában arra volt használva, hogy megjelenítse a tetszés szerinti hibaüzenetet és leállítsa az aktuális scriptet, ha a „sample.txt” fájl nem található.

Összegzés:

Mai leckénkben elkezdtük a PHP-hibakezeléssel való ismerkedésünket. Bemutattuk a leggyakoribb hibaokokat, illetve megismerkedhettél a hibaszintekkel és a jelölésükkel is. Ahhoz, hogy olyan hibaüzeneteket tudjunk létrehozni, amelyek a felhasználók számára is világosak és érthetőek, egy egyszerű kódot hívtunk segítségül.

A jövő héten is folytatjuk a témával való ismerkedést — létrehozzuk majd a saját hibakezelő funkciónkat, foglalkozunk a hibák naplózásával, és azt is bemutatjuk, hogyan tudod magad is beindítani a hibákat. Jó gyakorlást!

 


 

Nyereményjáték

Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.

A játék heti kérdése:

Mit jelent az E_NOTICE hibaszint?

1. Végzetes futásidejű hiba, mely nem helyreállítható.
2. Futásidejű figyelmeztetés, mely nem végzetes.
3. Futásidejű értesítés, mely arra utal, hogy a script valami olyannal találkozott, ami hiba is lehet.
 

A választ a tanulok@erdsoft.com e-mail-címre kell elküldeni, a tárgysorba pedig a következőt kell beírni: HÉTNAP-TANULOK. Sok szerencsét!

 


 

Néhány szó rólunk:

Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.

Hozzászólások
Hozzászólások
0
Hozzászólás küldése
1000 karakter áll rendelkezésére
A megjegyzésekben kifejtett vélemények a hozzászólások szerzőinek magánvéleményei, és nem tükrözik az internetes portál véleményét. A megjegyzéseket moderáljuk és jóváhagyjuk az általános szerződési feltételeknek megfelelően.
Támogatóink
Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Beállítások" gombra kattintva olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat..