Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP5.3/namespace/ClassLoader] Plucie wyjątkami zawiesza parser?
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


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? (IMG:style_emoticons/default/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. }


Ten post edytował starach 22.04.2010, 11:13:02
Go to the top of the page
+Quote Post
sirmate
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 7.05.2010

Ostrzeżenie: (0%)
-----


  1. if(@file_exists($sClassPath) === true){
Może tak zatrybi.

Ten post edytował sirmate 7.05.2010, 20:18:48
Go to the top of the page
+Quote Post
Zyx
post
Post #3





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Zyx 7.05.2010, 21:11:48
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Jeśli usunę plucie wyjątkiem to xdebug uprzejmie mnie poinformuje co jest nie tak.

Na jakiej platformie działasz?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:39