Hierarchia klas wyjątków |
Wpisany przez Patryk yarpo Jar | |||
wtorek, 27 lipca 2010 22:27 | |||
Mechanizm wyjątków, który z grubsza opisałem wcześniej. Wyjątek jest klasą, a (prawie) po każdej klasie można dziedziczyć. Po co dziedziczyć po wyjątkach? A no właśnie - tego się dowiesz za chwilę. DziedziczenieAby rozszerzyć (dziedziczyć) jakąś klasę używamy słowa kluczowego `extends':
Aby rzucić nasz własny wyjątek używamy składni:
Wiele bloków catchSkoro jest możliwość rzucenia wielu typów wyjątków, to i warto byłoby móc przechwycić różnego rodzaju wyjątki. Można:
Działa to podobnie do switcha. Podajemy klasę wyjątku i obsługę dla tego wyjątku. Gdyby zamienić kolejność w powyższym przykładzie, to przechwycony byłby wyjątek klasy Exception, ponieważ (dziedziczenie) wyjątek klasy MyException jest jednocześnie widziany jako wyjątek klasy Exception. Pseudomatematycznie można to zapisać: MyException > Exception, czyli "rozszerza".
Po co?Dzięki odpowiedniej hierarchi klas wyjątków możemy stworzyć różne wyjątki na różne niechciane, ale mogące się zdarzyć, sytuacje. A następnie w czytelny sposób je rozpoznać i obsłużyć:
Zamiast echo w takim wypadku można użyć np. funkcji mail (lub obudowanej w klasę) wysyłając sobie na maila informację co się stało. Bardzo przydatna może być wtedy taka konstrukcja:
Funkcja `var_export' rozłoży nam na części pierwsze wszystkie informacje o wyjątku. Na maila dostaniemy rozpiskę co się stało, w której linii, jakiej funkcji, z jakimi parametrami.
Co dalej?Zapraszam do lektury artykułu o walidacji danych w klasie wyjątku.
|