Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP5.3/namespace/ClassLoader] Plucie wyjątkami zawiesza parser?
Forum PHP.pl > Forum > PHP > Object-oriented programming
starach
Witam,

Żeby nie zamieszczać całego kodu dam tylko ten najważniejszy fragment i go opiszę.
W metodzie load() uruchamianej przez spl chcę wyrzucić wyjątek klasy \Exception jeśli nie znaleziono pliku z klasą. ( Nie krzyczcie, bo to tylko w celach testowych. W wersji finalnej nie będzie terminacji skryptu w takim wypadku. ) Niestety kiedy tak zrobię to chome mnie automatycznie przekieruje na chrome://chromewebdata/, który zawiera informację że strona nie została znaleziona. FF czy IE też odmawiają współpracy. Jeśli usunę plucie wyjątkiem to xdebug uprzejmie mnie poinformuje co jest nie tak.

Pytania: Czy to jest normalne? i Dlaczego tak się dzieje? blinksmiley.gif

edit>
Wnętrze metody ładującej pliki klas.
  1. (...)
  2. if(file_exists($sClassPath))
  3. {
  4. require($sClassPath);
  5. if(!class_exists($sClass))
  6. {
  7. throw new \Exception('Plik zaladowany nie ma klasy.'); // dziala
  8. }
  9. } else
  10. {
  11. throw new \Exception('Plik nie znaleziony.'); // NIE DZIALA
  12. }
sirmate
  1. if(@file_exists($sClassPath) === true){
Może tak zatrybi.
Zyx
starach -> uruchomiłem Twój autoloader i działa on mi bez problemu na PHP 5.3, zatem błąd musi leżeć w trochę innym miejscu. Jeśli chcesz sprawdzić czy interpreter faktycznie się zawiesza, odpal skrypt z konsoli. Przypuszczam, że dochodzi do ładowania jakiejś klasy w jakimś dziwnym miejscu (np. destruktor podczas kończenia pracy skryptu), nie zostaje ona znaleziona i coś nawala.

sirmate -> również witamy na forum, ale w pomaganiu nie chodzi do końca o dodawanie różnych rzeczy na chybił trafił. Po pierwsze operator @ powinien być używany wyłącznie w ekstremalnych przypadkach (tym bardziej że bardzo spowalnia on skrypt), po drugie file_exists() nie generuje akurat żadnych ostrzeżeń poza open_basedir.
erix
Cytat
Jeśli usunę plucie wyjątkiem to xdebug uprzejmie mnie poinformuje co jest nie tak.

Na jakiej platformie działasz?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.