Czasem zdarza się, że jakiś wyjątek pozostaje nie obsłużony, albo to z braku bloku try{}, bądź też braku pasujących blok catch(){}. Wtedy taki wyjątek zostaje surowo wyświetlony na ekranie. My jednak tego nie chcemy bądź dla zwiększenia bezpieczeństwa(może znajdować się tam jakieś hasło, ect), lub nie chcemy zasypywać użytkownika jakimiś nie zrozumiałymi dla niego błędami(lepiej wyświetlić jakąś prostą stronę z błędem), albo po prostu dla ułatwienia pracy deweloperowi. PHP5 udostępnia nam mechanizm umożliwiający zaopiekowanie się nie chcianymi wyjątkami. Funkcja stworzona do tego nazywa się set_exception_handler(), zademonstruje prosty przykład jak jej użyć.
<?php define( 'DEV', true ); function ExceptionHandler( $Ex ) { if( DEV == true ) { // Można zrobić coś dużo bardziej rozbudowanego :) echo 'Nie kochany wyjątek: '.$Ex->getMessage()."\n"; } else { // Zapis wyjątku do pliku, albo cos die( 'Przepraszamy za usterki!' ); } } set_exception_handler( 'ExceptionHandler' ); throw new Exception( 'UFO :)' ); echo 'Nie wykonany kod, ponieważ trafił nam się nie obłożony wyjątek'; ?>
Jeżeli ustawimy stałej DEV wartość true, będą pojawiać się nie złapane wyjątki – deweloper poprawi i po płaczu.
Jeżeli oddajemy już kod od działania ustawiamy false, wtedy użytkownik nie zobaczy wyjątku (w którym mogły by być jakieś hasła, lubo cokolwiek) tylko zostanie pokazana mu informacja jakaś informacja(przeproszenia, ect), można dopisać logowanie nie obsłużonych wyjątków dzięki temu deweloper będzie mógł obsłużyć wszystkie wyjątki czytając log.
Leave a reply