JError telah ditinggalkan dalam J3.x, mendukung pengecualian PHP, karena menggabungkan 2 konsep pemrograman yang berbeda : logging dan penanganan kesalahan (sisi logging sekarang telah diimplementasikan sebagai JLog ).
Untuk kasus yang tepat, Anda dapat membungkus kode Anda dalam blok coba / tangkap untuk mendapatkan kesalahan, seperti yang ditunjukkan dalam jawaban SO ini :
try {
...
$db->setQuery($query);
$result = $db->loadResult();
}
catch (Exception $e){
echo $e->getMessage();
}
Catatan yang $database->execute()
dinyatakan TIDAK bekerja di J2.5 . Anda harus menggunakan $database->query()
jika Anda membutuhkan yang setara.
Di Joomla 2.5 dan 3.x JDatabase
metode objek updateRecord()
dan insertRecord()
juga melempar kesalahan yang dapat Anda tangkap jika gagal:
try {
JFactory::getDbo()->updateObject('#_table_name', $data);
} catch (Exception $e) {
//...handle the exception
}
Jika Anda hanya mengembangkan untuk Joomla 3.x, Anda juga dapat menggunakan blok coba tangkap dengan transaksi SQL untuk mendapatkan detail kesalahan:
$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);
}
Idealnya instal pecl kemudian perpanjang kelas JDatabase * yang sesuai dan ganti JFactory :: getDbo () dengan implementasi di bawah ini untuk menghilangkan kebutuhan akan pembaruan kode triliunan untuk membungkus setiap kueri db penting dalam pernyataan coba tangkap.
Hal terbaik berikutnya bagi saya adalah dukungan di bawah ini untuk cara lama dan cara baru:
Sertakan ini di suatu tempat
Kemudian gunakan seperti ini
sumber