2013-02-25 16 views
10

Aşağıdakiler PHP 5.3'te çalışacaktır, ancak PHP 5.4.10'da bulunmaz.PHP'nin 5.4.10 sürümünde istisnalarla ilgili tutumları değişti mi?

throw new Custom_Exception(); 

class Custom_Exception extends Exception {} 

PHP 5.4.10 aşağıdaki ölümcül hata ile yanıt vereceğini:

Class 'Custom_Exception' not found in ...

kimse neden biliyor mu?

Not; Sınıf tanımının throw ifadesinin üzerine taşınması onu düzeltir.

+0

@nathanhayfield, Nope, yalnızca 'throw' ile olur. –

+1

Hata olabilir, hem 5.4.9'da hem de 5.5-dev'de çalışır: http://codepad.viper-7.com/XTloFa – Niko

+1

@Niko, Aşağıdaki hizmete göre, 5.4.10'da çalışır. ya da değil - http://sandbox.onlinephpfunctions.com/. Bunu gerçek bir makinede test ettin mi? –

cevap

-3

Ben bunu çağırmadan önce childclass Custom_Exception() oluşturmanız gerekir, çünkü tersi,

class Custom_Exception extends Exception {} 

throw new Custom_Exception(); 

varsayalım düşünüyorum.

+0

Elbette, ama neden? ... –

+0

Oldukça emin değilim, ama echo $ string demek gibi değil; daha sonra $ string = "Hello World" yazınız; ikinci sırada mı? – Richie

+2

Bu yanlış. Bir sınıf beyanı bir dosyada herhangi bir yerde meydana gelebilmelidir. –

1

Ben test.php adlı bir dosya içine kodunuzu koydu, ben çalıştırdığınızda php-5.4.10

indirildi

php -c php.ini-development -f test.php 

Ben şu çıktıyı bakın:

PHP Fatal error: Uncaught exception 'Custom_Exception' in test.php:3 
Stack trace: 
#0 {main} 
    thrown in test.php on line 3 

Fatal error: Uncaught exception 'Custom_Exception' in test.php:3 
Stack trace: 
#0 {main} 
    thrown in test.php on line 3 

sana inanıyorum bir yapılandırma sorunu var. Komut satırından test mi yapıyorsun?

Düzenleme: Ben de iki versiyonu için zend_compile.c içinde do_bind_inherited_class karşılaştırıldığında

. onlar sadece özelliklerin desteği eklendi gibi

zend_compile.c from 5.3

zend_compile.c from 5.4.10

görünüyor.

Cevabım: Hayır, tutumun değiştiğine inanmıyorum.

+0

Bu bir yorumdur; bunun yanı sıra, http://3v4l.org/XaECZ –

+0

@Jack: Yoğun bir şekilde yanıt verilebilir. Cevabımı göndermeden önce bu siteyi arıyordum, teşekkür ederim! Bence benim bir cevabım, aynı versiyonu test eden ilk kişi gibi görünüyorum ve ayrıca OP'nin sorduğu soruya cevap veren tek kişi. (Hayır, tutum değişmedi) – Martin

+0

Adil olmak gerekirse, sorunun "cevabı" zaten [bu yorum] 'da verilmiştir (http://stackoverflow.com/questions/15078219/has-phps-attitude-towards- istisnalar-değişmiş-in-sürümü-5-4-10/16827225? noredirect = 1 # comment21206563_15078219). Ayrıca, cevap vermiyor * neden * bu sadece OP için (yani görünüyor) olur. –

İlgili konular