Ya, pendekatan Anda benar. Menggunakan Try...catch
dalam beberapa kasus dapat menghasilkan kode yang lebih bersih dan lebih mudah dibaca, tetapi pendekatan Anda secara keseluruhan baik-baik saja.
Jika fragmen kode Anda berasal dari fungsi yang menangani kueri DB dan tidak banyak lagi, saya mungkin akan mengganti pendekatannya:
// Begin Transaction
$this->db->beginTransaction();
// Fire Queries
if(!$query_one->execute()){
$this->db->rollback();
// other clean-up goes here
return;
}
if(!$query_two->execute()){
$this->db->rollback();
// other clean-up goes here
return;
}
$this->db->commit();
Tentu saja, jika Anda memerlukan banyak pembersihan sebelum Anda dapat return
, maka pendekatan asli Anda lebih baik. Khususnya dalam kasus ini saya akan menggunakan PDO::ERRMODE_EXCEPTION. Ini memiliki beberapa manfaat tambahan, seperti pengecualian yang secara otomatis membatalkan transaksi kecuali jika tertangkap.