Kursy i Poradniki IT - Adrian Kowalski
Kurs Programowania PHP dla Początkujących
O lekcji

PHP oferuje dwa mechanizmy do obsługi problemów:

  • Błędy (np. ostrzeżenia lub krytyczne błędy).
  • Wyjątki (kontrolowany sposób obsługi błędów w kodzie).

Obsługa błędów

Błędy można obsługiwać, definiując niestandardowy handler za pomocą funkcji set_error_handler.

Przykład: Niestandardowy handler błędów

<?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
    echo "Błąd [$errno]: $errstr w $errfile w linii $errline.<br>";
}
set_error_handler("myErrorHandler");

// Wywołanie błędu
echo $undefined_variable;
?>

Obsługa wyjątków

Wyjątki (Exception) to obiektowe podejście do obsługi błędów. Można je rzucać (throw) i łapać (catch) w celu kontrolowanego zarządzania błędami.

Rzucanie wyjątków

Wyjątki rzuca się za pomocą throw. Zwykle używa się wbudowanej klasy Exception lub własnych klas wyjątków.

Przykład: Rzucanie wyjątku

<?php
function podziel($a, $b) {
    if ($b == 0) {
        throw new Exception("Nie można dzielić przez zero.");
    }
    return $a / $b;
}

try {
    echo podziel(10, 0);
} catch (Exception $e) {
    echo "Wystąpił błąd: " . $e->getMessage();
}

Własne klasy wyjątków

Możesz tworzyć własne klasy wyjątków, aby obsługiwać specyficzne przypadki.

Przykład: Własna klasa wyjątku

<?php
class MojWyjatek extends Exception {
    public function szczegolyBledu() {
        return "Błąd w pliku " . $this->getFile() . " w linii " . $this->getLine();
    }
}

try {
    throw new MojWyjatek("To jest niestandardowy wyjątek.");
} catch (MojWyjatek $e) {
    echo $e->getMessage() . "<br>";
    echo $e->szczegolyBledu();
}
?>

Obsługa wielu wyjątków

Możesz obsłużyć różne typy wyjątków w jednym bloku try.

Przykład: Obsługa wielu wyjątków

<?php
try {
    throw new InvalidArgumentException("Nieprawidłowy argument.");
} catch (InvalidArgumentException $e) {
    echo "InvalidArgumentException: " . $e->getMessage();
} catch (Exception $e) {
    echo "Exception: " . $e->getMessage();
}
?>