JError को PHP अपवादों के पक्ष में J3.x में पदावनत किया गया है, क्योंकि इसमें 2 अलग-अलग प्रोग्रामिंग अवधारणाओं को जोड़ा गया है : लॉगिंग और त्रुटि से निपटने (लॉगिंग पक्ष को अब JLog के रूप में लागू किया गया है )।
आपके सटीक मामले के लिए, आप त्रुटि प्राप्त करने के लिए अपने कोड को एक कोशिश / कैच ब्लॉक में लपेट सकते हैं, जैसा कि इस SO उत्तर में दिखाया गया है :
try {
...
$db->setQuery($query);
$result = $db->loadResult();
}
catch (Exception $e){
echo $e->getMessage();
}
ध्यान दें कि J2.5 में काम नहीं करने के$database->execute()
लिए कहा गया है । यदि आपको समकक्ष की आवश्यकता है तो आपको इसका उपयोग करना चाहिए ।$database->query()
जूमला 2.5 और 3.x में JDatabase
वस्तु विधियां updateRecord()
और insertRecord()
त्रुटियों को फेंकने पर भी आप पकड़ सकते हैं यदि वे विफल होते हैं:
try {
JFactory::getDbo()->updateObject('#_table_name', $data);
} catch (Exception $e) {
//...handle the exception
}
यदि आप केवल जूमला 3.x के लिए विकसित कर रहे हैं, तो आप त्रुटि विवरण प्राप्त करने के लिए 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);
}