Ponowne rzucanie wyjątku (re-throwing)
Założenie: Pokażemy jak ponownie rzucić przechwycony wyjątek w PHP po częściowej jego obsłudze.
Krok po kroku:
- Tworzymy funkcję, która może rzucić wyjątek:
- Próbujemy wykonać dzielenie i przechwytujemy wyjątek:
- Obsługa wyjątku na wyższym poziomie:
function dzielenie($a, $b) {
if ($b == 0) {
throw new Exception("Dzielenie przez zero!");
}
return $a / $b;
}
Funkcja dzielenie
sprawdza, czy dzielnik jest równy zero. Jeśli tak, rzuca wyjątek Exception
.
try {
$wynik = dzielenie(10, 0);
echo "Wynik: " . $wynik;
} catch (Exception $e) {
echo "Wystąpił błąd: " . $e->getMessage() . "\n";
//Dodatkowe działania, np. logowanie błędu
error_log("Błąd dzielenia: " . $e->getMessage());
//Ponowne rzucenie wyjątku
throw $e;
}
Blok try...catch
próbuje wykonać funkcję dzielenie
. Jeśli wystąpi wyjątek, jest on przechwytywany. Dodatkowo logujemy błąd za pomocą funkcji `error_log()`. Następnie, używając `throw $e;` ponownie rzucamy wyjątek, pozwalając na jego obsługę w wyższym poziomie.
try {
$wynik = dzielenie(10,0);
echo "Wynik: " . $wynik;
} catch (Exception $e) {
echo "Błąd krytyczny: " . $e->getMessage();
}
Tutaj pokazujemy jak obsłużyć wyjątek ponownie rzucony na wyższym poziomie. To pozwala na centralne zarządzanie krytycznymi błędami.
Ten przykład pokazuje podstawy ponownego rzucania wyjątków w PHP. Pozwala to na elastyczne i hierarchiczne zarządzanie błędami w aplikacji.