ugrás a tartalomhoz

Hibakezelés osztályokkal PHP 5.1-ben

janoszen · 2005. Nov. 26. (Szo), 10.46
Sziasztok!

Nemrég frissítettem PHP 5.1-re abban a reményben, hogy a globális hibakezelést ügyesen meg tudom valósítani. A célom az lenne, hogy trigger_error() segítségével eldobok egy hibaosztályt, amely a felhasználónak és a log-file-nak is tartalmazza a hibaüzenetet.

Namost, mint észrevettem, a trigger_error-nak nem tudok osztályt adni paraméternek. Azaz, tudok, de az akkor egy Notice kiséretében stringé alakul.

A hiba megoldását keresve, elkezdtem nézegetni az exception-öket. Először nagyon örültem, hogy van globális exception kezelés, de utána nagyon gyorsan lefagyott a mosoly az arcomról, amikor megláttam, hogy a globális exception kezelés után leáll a script futása.

Java, C++, stb felhasználóknak ez gondolom, szokványos, de nekem a trigger_error arra kellett volna, hogy a felhasználói üzenetek sorához hozzáfűzzek egy üzenetet és feljegyezzem, hogy melyik fájban történt a hiba dobása.

Azon kívül, hogy saját hibakezelést írok hozzá, van erre valami épkézláb megoldás?

Köszi
 
1

Megoldottam

janoszen · 2005. Nov. 26. (Szo), 18.09
Üdv mindenki!

Végül is egy egyszerű megoldás mellett döntöttem.

A kód így fog kinézni:

 trigger_error(new E_ValamiHiba(), E_USER_WARNING);
Az E_ValamiHiba osztálynak van egy __toString() függvénye. A hibakezelésnél a hibák loggolásra vannak állítva, szóval a __toString a debugra szánt üzenetet adja vissza. A felhasználónak szánt üzenetet a konstruktorban beleírja egy másik osztály által menedzselt üzenet-sorba.

Ha olyan hiba történik, amire pl. 500-as hibával kell visszatérni, akkor dobok egy Exception-t, amelyet a globális Exception-kezelő kap el, amelyik megcsinálja a hibaüzenetet.

Így minden igény ki van elégítve. Namost, a kérdésem: ez így tisztességes (stílusos) megoldás?

Köszi