Я використовував блоки try..catch у своєму PHP-коді, але не впевнений, чи правильно їх використовував.
Наприклад, деякий мій код виглядає так:
try {
$tableAresults = $dbHandler->doSomethingWithTableA();
$tableBresults = $dbHandler->doSomethingElseWithTableB();
} catch (Exception $e) {
return $e;
}
Отже, я групую кілька операцій над базою даних в одному блоці try / catch, тому що, якщо в будь-якій транзакції виникає будь-який виняток, я зможу це обробити.
Я роблю це так, бо вважаю, що це читабельніше та ефективніше, ніж:
try {
$tableAresults = $dbHandler->doSomethingWithTableA();
} catch (Exception $e) {
return $e;
}
try {
$tableBresults = $dbHandler->doSomethingWithTableB();
} catch (Exception $e) {
return $e;
}
Хоча, я не впевнений, чи те, що я роблю, є гарною практикою чи просто лінивим способом ловити винятки.
Я припускаю, що лише якщо виняток вимагає спеціальної обробки, він повинен мати власний блок try / catch, інакше групування їх у тому самому try / catch має бути нормальним.
Тож мої запитання:
Чи є якась перевага використання блоків try / catch для кожної транзакції бази даних? чи я все-таки можу без проблем згрупувати кілька транзакцій бази даних в одному блоці try / catch?
Чи добре вкладати блоки спроби / лову? Дякую!
РЕДАГУВАТИ
Оператор return був в основному лише для демонстрації, але я також використовую повернення, catch()
оскільки я роблю запит AJAX до цього методу, а Javascript очікує об'єкт JSON, тоді, якщо виникає виняток, я повертаю порожній масив, закодований JSON . Я просто думав, що це не додасть жодного значення для введення конкретного коду в мій приклад.
FOREIGN KEYS
задіяні вони? Чи залежать транзакції в таблиці B від операцій у таблиці A? Це те, що вам потрібно запитати себе, щоб вирішити, можете ви їх згрупувати чи ні.