Kivételek a php
Kivételes helyzetben ez a helyzet a kód végrehajtása során, amikor nem világos, hogy mi a következő lépés vagy a további kódfuttatás értelmetlen. Például, a szkript nem tudott csatlakozni az adatbázishoz, akkor az adatok hozzáadásával vagy kiválasztásával nyilvánvalóan értelmetlen. PHP-ben, hasonló helyzetekben gyakran a natív függvény egyszerűen hamis, és a tudatosan inaktív kód végrehajtása folytatódik. A helyzet elkerülése érdekében ellenőrizheti a funkció által visszaadott értéket, és ha hibát jelez, figyelmeztetést jelenít meg. Ennek a megközelítésnek hátrányai vannak. Először is, hogy módosítsa a műveletet, amikor hiba történik a kód felhasználójának, akkor módosítania kell a kódot. Sokkal jobb lenne, ha meghatározná a hiba kezelésének mechanizmusát. Másodszor, a funkció által visszaküldött érték nem mindig tekinthető megfelelőnek, vagy akár ellenőrizhető is lehet, akkor hiba esetén időbe telik az okok feltárása. Harmadszor, nem mindig igaz, hogy minden problémát közvetlenül egy módszerben vagy egy függvényben próbálunk megoldani, mert ebben az esetben a paraméterek validálása és a hibakezelés kezdetben meglehetősen egyszerű kódot okozhat. Sokkal jobb, ha valaki azt mondja a felhasználónak, hogy valami baj van, lehetővé téve, hogy eldöntsék, mi a teendő ebben az esetben.
Mindezen problémák megoldásához kivételkezelő mechanizmust találtak.
kivételek
Kivétel egy olyan objektum, amely a beépített Exception osztály egy példánya. Ez az objektum azért hozható létre, hogy információkat tároljon az elkövetett hibáról, és üzeneteket jelenítsen meg róla.
Az Exception osztály konstruktora két opcionális paramétert tartalmazhat: egy hibaüzenet és kódja. Az Exception osztály olyan módszereket is tartalmaz, amelyek segítenek meghatározni a hiba okait.
- getMessage - visszaadja a konstruktornak átadott karakterláncot, és hibaüzenetet tartalmaz.
- getCode - visszaadja a konstruktornak átadott hibakódot (int típus).
- getFile - visszaadja annak a fájlnak a nevét, amelyben a kivételt dobták.
- getLine - visszaadja annak a sornak a számát, amelyben a kivételt dobták.
- getTrace - olyan multidimenzionális tömböt ad vissza, amely egy olyan eljárássorozatot tartalmaz, amelynek hívása kivétel létrehozását eredményezte. Tartalmazza azokat a paramétereket is, amelyeket ezekre a módszerekre továbbítottak, és azoknak a sorszámoknak, amelyeken a hívások történtek.
- getTraceAsStrin g - Visszaküldi a getTrace módszer által visszaadott adatok string változatát.
- A __toString egy mágikus módszer, amelyet akkor hívnak, amikor az Exception osztály egy példánya egy karakterláncba kerül.
Kivétel létrehozása
Ha kivételt szeretne dobni, használja a dobási kulcsot és az Exception osztály egy példányát. amelyet gyakran a dobási nyilatkozat után hoznak létre. Az angol nyelvből a dobást "dobásnak" nevezik, ami nagyon pontosan leírja az üzemeltető viselkedését, amely kivételt hozhat azáltal, hogy megadja azt a kódot, amelyik az utasításnak a módját nevezi meg.
Nézzük az osztályt, hogy egy konfigurációs adatokat kapjunk egy ini fájlból.
Az osztály kódja nagymértékben leegyszerűsödik, és nincs benne hibakezelés. Például, ha nincs ini-fájl, helytelen formázás, vagy hiányzik bizonyos adatok a fájlban, akkor ez a kód nem fog megfelelően működni.
Az a fájl, amelyen ez az osztály fog működni, valami ilyesmi lehet:
userName = "true-coder"
password = "veryLongAndDifficult"
hostName = "localhost"
Annak a hibának a bejelentéséhez, amely segítséget nyújt a Config felhasználónak ahhoz, hogy megfelelően reagáljon rá, és megakadályozza a kód helytelen működését, a kivétel generáló mechanizmust használjuk.
Vegyünk néhány módosítást a Config konstruktornál.