Kao što verovatno svi znate, PHP5 ima mogućnost postavljanja Exceptions kao većina ozbiljnih programskih jezika. Pošto prepravljam neke klase da budu PHP5 only, interesuje me koja je, osim semantičke, prednost upotrebe Exceptions u odnosu na neko klasično "prikupljanje grešaka" u kodu.
Recimo, imamo najgori slučaj i lošu programersku praksu tipa:
PHP kôd:
$date = getSomeData ();
if (empty($data))
die ("Data empty");
...
to neću ni da komentarišem.
Onda imam slučaj koji ja koristim (u PHP < 5)
PHP kôd:
$data = getSomeData ();
if (empty($data))
$ErrorClass->addError ("Data empty, line: ".__LINE__, ERR_NON_CRITICAL);
...
if ($ErrorClass->hasErrors())
{
$ErrorClass->displayErrors();
}
ili nešto slično... znači prikupljaju se greške i jednostavno prikažu negde (ili samo u debug) ali izvršenje scripta se nastavlja.
Koja je prednost (performanse, memorija... whatever) ako ja prepravim moj sistem da koristi exceptions, na primer ovako:
PHP kôd:
try {
$data = getSomeData ();
if (empty($data))
throw new Exception ("Data empty, line: ".__LINE__, ERR_NON_CRITICAL);
...
} catch (Expception $e) {
echo "Greška ".$e->getMessage();
}
...
Znači, ovo su samo primeri bez veze, čisto me interesuje šta se tačno dobija po pitanju performansi, resursa ili nečeg drugog kada se upotrebljavaju Exceptions. Ja ne vidim neki značajan boljitak u kodu osim u preglednosti.