![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 19.04.2005 Ostrzeżenie: (10%) ![]() ![]() |
Czy jest sposob na obsluge wyjatkow funkcji wbudowanych w php. Chodzi mi o include ('plik'), gdzie po wpisaniu nieistniejacego pliku bede mogl wykonac wlasna funkcje a nie ze parser informuje mnie o tym ze pliku nie znaleziono.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 22.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Niestety mimo znacznego usprawnienia modelu obiektowego w php5, w tym obsługi wyjątków, większość standardowych funkcji języka, z których korzystamy na co dzień ciągle zorganizowane są w sposób proceduralny i nie zwracają wyjątków w razie niepowodzenia wykonania. Więc nie jest możliwe zamknięcie ich wywołania w bloku try i przechwytywania wyjątków. W takich przypadkach php zwraca błędy różnych poziomów w zależności od błędu.
Korzystając z funkcji set_error_handler mamy możliwość część tych błędów przechwytywać. Oto w jaki sposób przy wykorzystaniu tej funkcji + set_exception_handler ja radzę sobie z obsługą zwykłych błędów za pomocą wyjątków. Pomysł polega na tym, żeby funkcja set-error-handler wyrzucała napisany na tą potrzebę przez nas wyjątek. Dla pewności ustawiamy obsługę nieprzechwyconych wyjątków w set_exception_handler. W bardzo uproszczonej formie wygląda to następująco (kod w php5):
Klasa wyjątku mogłaby wyglądać tak:
Należałoby oczywiście dla każdego typu błędu stworzyć specjalistyczną klasę wyjątku i odpowiednio je obsługiwać. Użycie powyższego kodu sprowadza się już tylko do ustawienia napisanej przez nas funkcji obsługi błędów i przechwycenia odpowiedniego wyjątku:
Podejście jest oczywiście bardzo ubogie i nie wolne od błędów. Trzeba między innymi pamiętać o tym, że nasz error_handler nie będzie przechwytywał błędów typu E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING i części E_STRICT, z którymi nic nie zrobimy. Cytat Poczytaj o funkcji __autoload() i poszukaj na forum. Temat był poruszany nie raz, jest pewna możliwość, ale jest trochę zabawy. forum.php.pl :: search :: autoload Nie bardzo rozumiem co ma wspólnego funkcja __autoload() z pytaniem zadanym przez reekz Z poważaniem, kf P.S. Takiego samego posta na podobne pytanie umieściłem na innym polskim forum. Zdecydowałem się zamiast podać linka napisać go tutaj jeszcze raz. Mam nadzieje, że jest to zgodne z tutejszymi zasadami. (IMG:http://forum.php.pl/uwaga.gif) poprawiam --- nospor |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 19:02 |