W PHP5 wyjątku są obiektami, co pozwala nam na dopasowywanie ich do swoich potrzeb. Głównym obiektem jest klasa Exception(). Przyjrzyjmy się dokładniej jej budowie, aby wiedzieć z czym dokładnie mamy do czynienia.
<?php class Exception { protected $message = 'Unknown exception'; // exception message protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception function __construct(string $message=NULL, int code=0); final function getMessage(); // message of exception final function getCode(); // code of exception final function getFile(); // source filename final function getTrace(); // an array of the backtrace() final function getTraceAsString(); // formated string of trace /* Overrideable */ function _toString(); // formated string for display } ?>
Opisze mniej więcej o co chodzi w danych właściwościach i metodach:
Właściwości
● Exception :: message – Informacja o tym, co spowodowało wystąpienie wyjątku,
● Exception :: code – Definiowany przez programistę kod wyjątku,
● Exception :: file – Pliku w którym wystąpił wyjątek,
● Exception :: line – Linia w której wystąpił wyjątek.
Metody
● Exception :: __constructor( $sMessage, $iCode )
- Informacja co spowodowało wyjątek
- Numer wyjątku
● Exception :: getMessage()
- Zwraca informacje co spowodowało wyjątek
● Exception :: getCode()
- Zwraca kod wyjątku
● Exception :: getFile()
- Zwraca ścieżkę do pliku, gdzie wystąpił wyjątek
● Exception :: getTrace()
- Zwraca ślad w postaci tablicy (z funkcji backtrace() )
● Exception :: getTraceAsString()
- Zwraca ślad z postaci łańcucha znaków
● Exception :: __toString()
- Magiczna metoda… Jeżeli będziemy chcieli potraktować obiekt jako string, ta funkcja ma zwrócić string jakiego oczekujemy (najczęściej zwraca się tutaj Exception :: message )
Tak wygląda budowa głównej klasy wyjątków. Warto zapoznać się z jej budową, ponieważ to na jej postawie będziemy tworzyć własne wyjątki, które będą nas informować o problemach w naszych programach.
Leave a reply