Wyjątki a inżynieria niezawodności (SRE)
Założenie: Pokażemy, jak obsługa wyjątków w PHP może pomóc w budowaniu bardziej niezawodnych aplikacji, zgodnie z zasadami inżynierii niezawodności (SRE).
Krok po kroku:
- Próba podzielenia przez zero: W PHP próba podzielenia przez zero generuje błąd. Zastosujemy blok `try…catch` aby go przechwycić.
- Obsługa niestandardowych wyjątków: Możemy tworzyć własne wyjątki, aby lepiej zarządzać błędami w naszej aplikacji.
try {
$result = 10 / 0;
echo "Wynik: " . $result;
} catch (DivisionByZeroError $e) {
echo "Wystąpił błąd: " . $e->getMessage();
}
Ten kod próbuje podzielić 10 przez 0. Blok `catch` przechwytuje wyjątek `DivisionByZeroError` i wyświetla komunikat o błędzie, zapobiegając awarii aplikacji.
class InvalidInputException extends Exception {}
function validateInput($input) {
if ($input < 0) {
throw new InvalidInputException("Wartość wejściowa musi być dodatnia.");
}
return $input;
}
try {
$validatedInput = validateInput(-5);
echo "Zwalidowana wartość: " . $validatedInput;
} catch (InvalidInputException $e) {
echo "Wystąpił błąd: " . $e->getMessage();
}
Tutaj definiujemy klasę `InvalidInputException` dziedziczącą po klasie `Exception`. Funkcja `validateInput` rzuca ten wyjątek, jeśli wartość wejściowa jest ujemna. Blok `catch` go przechwytuje i wyświetla odpowiedni komunikat.
Ten przykład pokazuje podstawy obsługi wyjątków w PHP. Dalsza nauka obejmuje zagłębienie się w różne typy wyjątków, hierarchię wyjątków oraz zaawansowane techniki logowania i raportowania błędów, co jest kluczowe dla praktyk SRE.