Hvata greške na jednom mestu i ne brineš gde će se desiti (koliko "duboko"). Ovo je izuzetno bitno kod kompleksnih aplikacija. Primer:
PHP kôd:
$user = new User();
$user->setUsername('root');
try {
$user->save();
} catch(Exception $e) {
die('Error! ' . $e->getMessage());
}
Do greške može doći jer objekat ne prolazi validaciju (root je prekatak user ili korisnik root već postoji) ili zbog greške u izvršavanju upita. Bilo kako bilo, ti je hvataš na jednom mestu. Dalje, jednostavno možeš obraditi više tipova greške:
PHP kôd:
try {
$user->save();
} catch(ValidationException $e) {
die('Validation error:<br />' . implode('<br />', $e->getErrors()));
} catch(QueryException $e) {
die('Query error! ' . $e->getSQL());
}
Pošto su izuzeci objekti možeš da čuvaš mnogo podataka o samoj grešci.
Nije da se ne može postići klasičnim metodama, ali to je već hakeraj i podrazumeva puno prljavog petljanja koje samo čini kod složenijim i podložnijim greškama. Izuzeci čine život lakšim