Ben şu PHP kodu:
foreach (...) {
try {
$Object = MyDataMapper::getById(123);
if (!$Object->propertyIsTrue()) {
continue;
}
}
catch (Exception $e) {
continue;
}
}
Bir veritabanı kaydı bulunamadı değilse MyDataMapper :: GetById () bir özel durum atar. İşte bu yöntemin tanımı:
public static function getById($id) {
$query = "SELECT * FROM table WHERE id = $id";
$Connection = Database::getInstance();
$Statement = $Connection->prepare($query);
$Statement->execute();
if ($Statement->rowCount() == 0) {
throw new Exception("Record does not exist!");
return null;
}
$row = $Statement->fetch();
return self::create($row);
}
Bu kodu yok bir veritabanı kaydı kimliği için çağrıldığında, ben bir ölümcül yakalanmamış istisna 'İstisna' hatası alıyorum.
Neden bu? Açıkçası ben yanlış ne yapıyorum ... istisna yakalıyorum?
Ben bir istisna atılan eminim. Belki devam ile - Ben istisna işleme am nasıl yanlış bir şey var mı?
EDIT
Sarsıntıdan gelen yardım sayesinde, aşağıdaki geçici çözüm bu sorunu çözer:
if (!$Object->propertyIsTrue()) {
// Workaround to eAccelerator bug 291 (http://eaccelerator.net/ticket/291).
$foo = 555;
continue;
}