JError ได้รับการคัดค้านใน J3.x ในความโปรดปรานของข้อยกเว้น PHP, ในขณะที่มันรก 2 แนวคิดการเขียนโปรแกรมที่แตกต่างกัน : เข้าสู่ระบบและจัดการข้อผิดพลาด (ด้านการเข้าสู่ระบบในขณะนี้ได้รับการดำเนินการเป็นJLog )
สำหรับกรณีที่แน่นอนของคุณคุณสามารถใส่โค้ดใน try / catch block เพื่อรับข้อผิดพลาดดังแสดงในคำตอบ SO นี้ :
try {
...
$db->setQuery($query);
$result = $db->loadResult();
}
catch (Exception $e){
echo $e->getMessage();
}
ทราบว่า$database->execute()
มีการระบุไว้ในการทำงานไม่ได้อยู่ใน J2.5 คุณควรใช้$database->query()
ถ้าคุณต้องการที่เทียบเท่า
ใน Joomla 2.5 และ 3.x JDatabase
วิธีการของวัตถุ updateRecord()
และinsertRecord()
ยังโยนข้อผิดพลาดที่คุณสามารถตรวจพบได้หากล้มเหลว:
try {
JFactory::getDbo()->updateObject('#_table_name', $data);
} catch (Exception $e) {
//...handle the exception
}
หากคุณกำลังพัฒนาสำหรับ Joomla 3.x เท่านั้นคุณสามารถใช้ catch catch block กับธุรกรรม SQLเพื่อรับรายละเอียดข้อผิดพลาด:
$db = JFactory::getDbo();
try {
$db->transactionStart();
$query = $db->getQuery(true);
$values = array($db->quote('TEST_CONSTANT'), $db->quote('Custom'), $db->quote('/path/to/translation.ini'));
$query->insert($db->quoteName('#__overrider'));
$query->columns($db->quoteName(array('constant', 'string', 'file')));
$query->values(implode(',',$values));
$db->setQuery($query);
$result = $db->execute();
$db->transactionCommit();
}
catch (Exception $e) {
// catch any database errors.
$db->transactionRollback();
JErrorPage::render($e);
}