ugrás a tartalomhoz

Hogyan néz ki egy jól megcsinált hibakezelés?

Anonymous · 2006. Ápr. 27. (Cs), 11.05
Sziasztok!

Az érdekelne, hogyan hogyan "szokás" megcsinálni egy nagyobb alkalmazás esetén a hibakezelést. Szeretném ha egységes lenne és a fatális hibáktől az egyszerű figyelmeztetésekig használni lehetne.

Elsősorban nem OOP-t használok, olyan megoldást (is) mondjatok ami a jó öreg parasztos fv-ekkel is múködhet.

Eddig azt eszeltem ki, hogy konstansokat definiáltam az egyes hibákódokhoz és azokra hivatkoztam. pl:
define('ERROR_NODE_NOT_FOUND',-2);
Hibákat az adott függvényben "return" segítségével jeleztem vissza a hívó kódnak. pl:

if (empty($resultArray))
		{
		return ERROR_NODE_NOT_FOUND;
		}
Ahol több dolgot kellett visszajelezni ott azzal próbálkoztam, hogy az egyes hibákhoz úgy definiáltam a kódokat mintha jelzőbitek lennének. (-1,-2,-4,-8)
Ebből aztán kihámoztam ami kellett.

Gondoltam olyan megoldásra is, hogy egy globális hibatömbbe pakolgatom a kis kódjaimat, és adatbázisban vagy sessionben tárolom ha kell két oldalletöltés között. ami azért is jó mert pl az oldal renderelésekor meg tudom vizsgálni és aszerint kiirni üzeneteket.
Ezek nem szeretném nagyon bedrótozni, mert pl az üzenetek nyelvspecifikusan kell hogy megjelenjenek meg aztán egyébként is frusztrál ha valami nem ruganyos a kódjaimban. :)

Most moduláris alkalmazást készítek azt szeretném, ha a főprogram és a modulok egymással is gond nélkül beszélgetnének.

Lássatok el jótanácsokkal meg mondjátok meg hogy tolok ki magammal legkevésbé.

Köszönöm!
 
1

PEAR_ErrorStack

toxin · 2006. Ápr. 27. (Cs), 12.00
kukk meg http://pear.php.net/manual/hu/core.pear.pear-errorstack.php , ha ötletekre vágyol ;)
2

__LINE__

Anonymous · 2006. Ápr. 27. (Cs), 12.40
Csak egy kis tipp: az általam definiált hibaüzenetekhez hozzá szoktam írni a kódsor számát (__LINE__), ahol az el lett követve. Így nem árulok el infót a kívülállónak (a rések feltérképezése hibaüziken keresztül), de nekem igen hasznos lehet, ha futás közben több helyen is létrejöhet hiba. Pl:
Valami hiba történt. ErrNo: 728

Üdv: Thom
3

Exception.

janoszen · 2006. Ápr. 27. (Cs), 15.07
Hát, leginkább exceptionökkel. Nagyon jó, visszatérési értékek helyett osztályokat dobálhatsz.

Sőt, PHPban van még egy bónusz is, lehet általános hibakezelőt írni és mondjuk abból HTTP 500-as hibát dobni.

Pl így:
<?php
class MyClass
{
 function abc()
 {
  throw new MyErrorClass("Böfizett a program.");
 }

 function xyz()
 {
  try
  {
   $this->abc();
  } catch($e) {
   log_my_error($e->adminErrorMessage());
   output_my_error($e->userErrorMessage());
  }
 }
}
?>
Persze, itt a hibaosztályokat magadnak kell megírni, szal a fenti függvényeket csak hirtelen kitaláltam. Ja, és nem biztos, hogy jó, fejből írtam.
4

Hm

Anonymous · 2006. Május. 16. (K), 22.22
Hm, érdekes. Elgondolkodtam, tetszik. :D

Üdv,
Tomi
-------
Reklám szöveg írás blog
http://reklamszoveg.blogspot.com