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:

  1. Tworzenie prostego wyjątku: Spróbujmy podzielić liczbę przez zero. To spowoduje wyjątek.
  2. 
    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.

  3. Obsługa różnych typów wyjątków: Możemy obsłużyć różne typy wyjątków w osobnych blokach catch.
  4. 
    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.

  5. Rzuć własny wyjątek: Możemy sami rzucać wyjątki, aby sygnalizować błędy w naszym kodzie.
  6. 
    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!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *