Hibakezelés; Notice típusú "hibákkal" mennyire érdemes foglalkozni?
GET, SESSION és COOKIE változókra dobálja a Notice típusú figyelmeztetőket, meg persze egyéb esetekben is (be nem állított konstans például, de most nem ez a lényeg). Ezekkel mit lehet kezdeni? Bizonyos esetekben nem definiálhatom előre ezeket a változókat, például ha pont egy SESSION változó értékének beállítottságát akarom csekkolni, akkor ugye nem túl szerencsés, ha előre adok értéket neki csak a notice miatt...
Ezeknek a figyelmeztetéseknek tényleg nincs értelme, sőt, egyenesen hiba ezeket hibának venni (főleg $_GET esetén), vagy csak én látom így ezt a dolgot? Ilyenek miatt vétek egy normális hibakezelő/loggolo függvényt írni, mert egy nap után megtelik egy kisebb tárhely csak a log fileal... Ha meg a notice típust kihagyom a logból, akkor kimaradnak a többi, esetleg értékes információkat hordozó megjegyzések.
Hogyan oldjátok ezt meg?
■
<?php
error_reporting(E_ALL);
if ($_GET["get_var"]) {
echo $_GET["get_var"];
}
?>
Notice: Undefined index: get_var in ...\www\teszt\index.php on line 5
Ezeknek a figyelmeztetéseknek tényleg nincs értelme, sőt, egyenesen hiba ezeket hibának venni (főleg $_GET esetén), vagy csak én látom így ezt a dolgot? Ilyenek miatt vétek egy normális hibakezelő/loggolo függvényt írni, mert egy nap után megtelik egy kisebb tárhely csak a log fileal... Ha meg a notice típust kihagyom a logból, akkor kimaradnak a többi, esetleg értékes információkat hordozó megjegyzések.
Hogyan oldjátok ezt meg?
Megoldás lehet...
kezelni kell
Kezelés nagyon egyszerű: isset, empty függvények remekül használhatóak erre a célra. Ráadásul azzal sem értek egyet, hogy feleslegesen kell többet gépelni, mivel egy rendes editor ezt megteszi helyettünk.
Felhő
van értelme
Van értelme! Például ha elgépelsz egy változónevet. Csinálj olyan kódot, hogy ne legyen egyáltalán notice sem.
A @ operátor letiltja a hibákat:
if (@$v=='') { Nem volt beállítva, vagy üres sztring volt }
@include('nincs-ilyen-fajl.inc');
stb.
kukacoskodás veszélyes
Felhő
@
A válaszokat mindenkitől köszönöm. Az isset függvényt fogom használni. Az empty nem jó; ugyanúgy kiírja a hibaüzenetet, mint az eredeti példánál.
user error
Akkor ott valamit elnéztél, tuti nem írja ki. Én szeretem használni, mert sok esetben kell azt nézni, hogy egy változó létezik-e és nem nulla-e egyszerre, és ilyenkor jól jön ez a kis függvény (illetve pontosabban nyelvi konstrukció).
Sry
A notice is hiba...