Przechwytywanie wyjątku (try-catch)
Założenie: Nauczymy się obsługiwać wyjątki w PHP za pomocą konstrukcji try-catch
, zapobiegając awaryjnemu zakończeniu skryptu.
Krok po kroku:
- Tworzenie prostego wyjątku: Spróbujmy podzielić liczbę przez zero. To spowoduje wyjątek.
- Obsługa różnych typów wyjątków: Możemy obsłużyć różne typy wyjątków w osobnych blokach
catch
. - Rzuć własny wyjątek: Możemy sami rzucać wyjątki, aby sygnalizować błędy w naszym kodzie.
try {
$result = 10 / 0;
} catch (DivisionByZeroError $e) {
echo "Wystąpił błąd: " . $e->getMessage();
}
Ten kod umieszcza operację dzielenia przez zero w bloku try
. Jeśli wystąpi błąd DivisionByZeroError
(dzielenie przez zero), kod w bloku catch
zostanie wykonany, wyświetlając komunikat o błędzie.
try {
$file = fopen("plik_którego_nie_ma.txt", "r");
if ($file) {
fclose($file);
}
} catch (DivisionByZeroError $e) {
echo "Błąd dzielenia przez zero: " . $e->getMessage();
} catch (FileNotFoundException $e) {
echo "Błąd: Plik nie został znaleziony.";
} catch (Exception $e) {
echo "Wystąpił nieoczekiwany błąd: " . $e->getMessage();
}
Ten przykład pokazuje obsługę DivisionByZeroError
i FileNotFoundException
. Ostatni blok catch
z Exception
przechwytuje wszystkie inne typy wyjątków.
function sprawdzWiek($wiek) {
if ($wiek < 0) {
throw new InvalidArgumentException("Wiek nie może być ujemny!");
}
echo "Wiek poprawny: " . $wiek;
}
try {
sprawdzWiek(-5);
} catch (InvalidArgumentException $e) {
echo "Błąd: " . $e->getMessage();
}
Funkcja sprawdzWiek
rzuca wyjątek InvalidArgumentException
, jeśli wiek jest ujemny.
Ten przykład pokazuje podstawy obsługi wyjątków w PHP za pomocą konstrukcji try-catch
. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi typami wyjątków!