हाँ, आपका दृष्टिकोण सही है। Try...catch . का उपयोग करना कुछ मामलों में क्लीनर और अधिक पठनीय कोड हो सकता है लेकिन आपका समग्र दृष्टिकोण ठीक है।
यदि आपका कोड खंड ऐसे फ़ंक्शन से है जो डीबी प्रश्नों को संभालता है और बहुत कुछ नहीं, तो शायद मैं दृष्टिकोण को चारों ओर बदल दूंगा:
// 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();
बेशक, अगर आपको return करने से पहले बहुत सारी सफाई की आवश्यकता है , तो आपका मूल दृष्टिकोण बेहतर है। विशेष रूप से इन मामलों में मैं पीडीओ ::ERRMODE_EXCEPTION का उपयोग करना चाहता हूं। इसके कुछ अतिरिक्त लाभ हैं, जैसे अपवाद स्वचालित रूप से लेन-देन को वापस ले लेते हैं जब तक कि वे पकड़े नहीं जाते।