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 |
|
|
|
areekz obsluga wyjatkow 7.11.2005, 11:48:28
DeyV Niestety - nie.
W tej chwili php nie ma jeszcze p... 7.11.2005, 11:57:00
mike_mech Poczytaj o funkcji __autoload() i poszukaj na foru... 7.11.2005, 11:57:20
bregovic Może się mylę, ale chyba można coś zwojować używaj... 7.11.2005, 15:57:46
bela_666 Jasne że można, ale to nie to samo co natywna obsł... 7.11.2005, 18:04:39
hwao Cytat(areekz @ 2005-11-07 12:48:28)Czy jest s... 24.11.2005, 15:59:37
dtb [PHP] pobierz, plaintext <?phpif (file_exis... 24.11.2005, 16:03:30
krzysztof f. To że na każdy problem istnieje wiele rozwiązań, n... 28.11.2005, 14:23:15
dtb napisz wlasny odpowiednik funkcji:
[PHP] pobierz, ... 28.11.2005, 15:12:22
krzysztof f. Cytat(dtb @ 2005-11-28 14:12:22)napisz wlasny... 29.11.2005, 11:48:29
Ozzy Wszystko ok, tyle że klasa ErrorException już istn... 4.12.2005, 00:06:40
Ociu Cytat(mike_mech @ 2005-11-07 12:57:20)Poczyta... 4.12.2005, 08:51:06
Ozzy Ja drążę wypowiedź Krzystofa f. z ciekawym pomysłe... 4.12.2005, 10:41:40
dr_bonzo Co ty chcesz obchodzic? Jak metoda wyrzuca wyjatek... 4.12.2005, 10:56:30
Ozzy bonzo, nie zrozumiałeś problemu. Wszystko od trzec... 4.12.2005, 11:09:00
Ociu I kod powinien być zatrzymany. Jeśli masz błąd w a... 4.12.2005, 11:25:31
dr_bonzo Ozzy: Maual sie klania - http://pl.php.net/manual/... 4.12.2005, 11:42:29
Ozzy W ogóle nie rozumiecie jaki jest problem, spróbujc... 4.12.2005, 11:53:21
dr_bonzo Cytatnawet niezłapany NOTICE zatrzymuje całą aplik... 4.12.2005, 12:04:47
Ozzy No to powodzenia w łapaniu każdego błędu. 4.12.2005, 12:35:42
dr_bonzo Juz nie wiem jak ci wytluamczyc obsluge wyjatkow -... 4.12.2005, 12:42:25
krzysztof f. Easy guys... Proszę Was, taka dyskusja do niczego ... 6.12.2005, 12:46:32
Ozzy No i pięknie. Jak widać jest to możliwe:)
Jak będę... 13.12.2005, 01:20:18 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 04:53 |