Logowanie wyjątków (try-catch, set_exception_handler)
Założenie: Nauczymy się obsługiwać wyjątki w PHP za pomocą konstrukcji try-catch
oraz zdefiniowania własnego handlera wyjątków za pomocą funkcji set_exception_handler()
. Pokazane zostaną różne sposoby logowania informacji o błędach.
Krok po kroku:
- Obsługa wyjątków za pomocą try-catch:
try { // Kod, który może wywołać wyjątek $dzielnik = 0; $wynik = 10 / $dzielnik; } catch (DivisionByZeroError $e) { // Obsługa wyjątku DivisionByZeroError echo "Wystąpił błąd: " . $e->getMessage(); error_log("Wystąpił błąd dzielenia przez zero: " . $e->getMessage()); //Logowanie do pliku }
Ten fragment kodu próbuje podzielić 10 przez 0, co wywołuje wyjątek
DivisionByZeroError
. Blokcatch
przechwytuje ten wyjątek i wyświetla komunikat o błędzie. Dodatkowo, funkcjaerror_log()
zapisuje informację o błędzie do pliku logów. - Niestandardowy handler wyjątków:
function customExceptionHandler($exception) { $logMessage = "Wyjątek: " . get_class($exception) . "\n"; $logMessage .= "Wiadomość: " . $exception->getMessage() . "\n"; $logMessage .= "Plik: " . $exception->getFile() . "\n"; $logMessage .= "Linia: " . $exception->getLine() . "\n"; error_log($logMessage); echo "Wystąpił nieoczekiwany błąd. Szczegóły zostały zalogowane."; } set_exception_handler('customExceptionHandler'); // Kod, który może wywołać wyjątek throw new Exception("To jest przykładowy wyjątek.");
Ten kod definiuje funkcję
customExceptionHandler
, która przyjmuje obiekt wyjątku jako argument i loguje szczegółowe informacje o błędzie do pliku. Funkcjaset_exception_handler()
rejestruje tę funkcję jako niestandardowy handler wyjątków. Każdy nieobsłużony wyjątek będzie teraz obsługiwany przez tę funkcję.
Ten przykład pokazuje podstawowe metody obsługi wyjątków w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi typami wyjątków oraz sposobami ich logowania.