W swoich klasach "rzucam" wyjątkami przy wystąpieniu błędów typu critical dla mojej aplikacji (czyli takie, które uniemożliwiają dalsze działanie aplikacji)
Powiedzmy, że wyjątki wydają mi się troszkę "nieporęczne" w użytku.
Mam przykładowo:
(piszę od ręki)
Kod
class layout {
// jakieś metody
function load($dir, $file) {
if (file_exists(/* argumenty)) {
// include
}else{
// rzucam wyjątkiem
throw new Exception('Nie mogę załadować pliku xxx.php');
}
}
}
// jakieś metody
function load($dir, $file) {
if (file_exists(/* argumenty)) {
// include
}else{
// rzucam wyjątkiem
throw new Exception('Nie mogę załadować pliku xxx.php');
}
}
}
I potem w innym pliku chcąc "złapać" wyjątek...
Kod
try {
$handle->load($plik);
} catch {
// obsługa błędu, czy to zapisanie loga czy wyświetlenie użytkownikowi informacji o błędzie
}
$handle->load($plik);
} catch {
// obsługa błędu, czy to zapisanie loga czy wyświetlenie użytkownikowi informacji o błędzie
}
Według moich założeń, wyjątkami rzucałbym tylko przy błędach krytycznych, o których pisałem wyżej.
I tak jest ich sporo, a używanie wszędzie try { } catch { } jest co najmniej nie wygodne.
Macie jakieś swoje pomysły? Doświadczenia ? Co do łapania wyjątków i ich obsługi ?