, catch bloğu \Exception
başvuruda bulunmalıdır hiçbir ters eğik çizgi varsa o zaman PHP geçerli ad alanında Exception
arayacaktır. Bu genellikle başarısız olur ve yakalanmamış istisna Xdebug'a iletilir.
Aşağıdaki kod Xdebug istisna geçirir:
namespace foo;
try {
new \PDO(0);
} catch (\Exception $e) {
echo "Caught!";
}
// Exception caught correctly
Elle atma istisnalar olabilir:
namespace foo;
try {
new \PDO(0);
} catch (Exception $e) {
echo "Caught!";
}
// Fatal error: Uncaught exception...
ters eğik çizgi ekleme genel ad Exception
arayın (ve bulmak) olacak İstisna önce kafa karıştırıcı (bu yüzden yukarıda PDO kullandım). catch bloğunda global bir referans olmadan küresel bir istisna Fırlatma
namespace foo;
try {
throw new Exception();
} catch (Exception $e) {
echo "Caught!";
}
// Fatal error: Class 'foo\Exception' not found
farklı başarısız:
namespace foo;
try {
throw new \Exception(); // global Exception
} catch (Exception $e) {
echo "Caught!";
}
// Fatal error: Uncaught exception 'Exception' in...
biz Geçerli isim alanında bir özel durum atmak çalışırsanız, PHP orada yok bize İstisna söyler
Tüm bunların ışığında, her zaman yakalayıcının Exception
'u bir ters eğik çizgi ile önek yapmak iyi bir fikirdir.
namespace foo;
try {
throw new \Exception();
} catch (\Exception $e) {
echo "Caught!";
}
// Exception caught correctly
Bunun xdebug.show_exception_trace ile bir ilgisi olduğunu kabul ediyorum. Bence 0'a ayarlandığında yakalanan istisnaları görmezden gelmeliyiz, fakat bir şekilde bu açık bir şekilde devre dışı bırakıldığında bile işe yaramaz. – nuqqsa
# php.pecl @ EFNet adresindeki Derick ile konuşun ya da http://bugs.xdebug.org/ adresindeki hata izleyiciyi kullanın. – Artefacto
Bu son yorum cevabınızı tamamlar :) Bu hatayı bildirmek için kesinlikle bu hatayı bildireceğim hala 2.1.0RCx içinde yeniden üretin. Teşekkürler. – nuqqsa