PHP try catch – czym są wyjątki?
Wyjątki służą do wyłapywania błędów w wykonywaniu skryptu. Przykładowo, gdy chcemy otworzyć jakiś plik, który nie istnieje, skrypt się sypie. Wtedy do akcji wkraczają wyjątki. Zamiast zakończyć program, zwracany jest wyjątek. Dzięki temu możemy wyświetlić odpowiedni komunikat o błedzie użytkownikowi.
Każdy nowy wyjątek opatrzony jest odpowiednim komunikatem i kodem błędu. Tak naprawdę, to istnieje zdefiniowana klasa Exception, a my tworzymy obiekty tej klasy. Nie zaprzątaj sobie jednak tym głowy. Na programowanie obiektowe przyjdzie czas. Na tę chwilę musisz wiedzieć, że każdy wyrzucany wyjątek zawiera komunikat oraz kod.
Wyrzucanie wyjątków
W przypadku, gdy wystąpi błąd i chcemy wyrzucić pewien wyjątek, posługujemy się poleceniem throw. Wyrzucać, jak napisałem powyżej, możemy obiekty klasy Exception. W praktyce wygląda to tak:
<?php if(!wykonaj_funkcje()) throw new Exception('Funkcja nie mogła być wykonana', 5); ?>
Powyższy skrypt wyrzuci wyjątek w wypadku, gdy funkcja „wykonaj_funkcje()” zwróci false. Wyjątek o kodzie '5′ i komunikacie 'Funkcja nie mogła być wykonana’.
Łapanie wyjątków
Skrypt będzie wyłapywać wyjątki jedynie w bloku try. Dlatego wszystkie podejrzane funkcje, które chcemy obsłużyć wyjątkami, musimy umieścić w:
<?php // bezpieczne funkcje try { // podejrzane funkcje } ?>
Następnie, jeżeli któraś z podejrzanych funkcji wyrzuci wyjątek, trzeba go „złapać” i odpowiednio obsłużyć. Wyjątki łapiemy za pomocą instrukcji catch. Poniżej przykład w praktyce:
<?php // bezpieczne funkcje try { // podejrzane funkcje } catch (Exception $e) { echo 'Wystąpił wyjątek nr '.$e->getCode().', jego komunikat to: '.$e->getMessage(); } ?>
$e->getCode() zawiera kod wyrzuconego wyjątku, a $e->getMessage() komunikat. Jeżeli zastosowalibyśmy wyjątek z początku tej lekcji, $e->getCode() miałoby wartość '5′, a $e->getMessage() to 'Funkcja nie mogła być wykonana’. W ten sposób użytkownik będzie wiedział, dlaczego pojawia się błąd i będzie mógł powiadomić o tym administratora.
To tyle na temat wyjątków. Ich stosowanie nie jest obligatoryjne, ale może usprawnić korzystanie z witryny. W następnym odcinku obługa plików, wysłanych na serwer. Zapraszam!
Spis lekcji w rozdziale szóstym
Poprzednia lekcja: Usuwanie zmiennych i zakańczanie sesji | Następna lekcja: Wysyłanie plików na serwer |