Рассмотрим следующие два блока псевдокода Java в системе, которая использует оптимистичные транзакции.
Пример A :
try {
txn.begin();
// database operations
txn.commit();
}
catch (Exception e) {
txn.rollback();
}
Пример B
txn.begin();
// database operations
try {
txn.commit();
}
catch (Exception e) {
txn.rollback();
}
В нашем коде транзакции выполняются в обоих направлениях; Я уверен, что A правильно. моя интуиция говорит мне, что B не так, но кажется, что в B нет никакого вреда, поскольку commit()
находится в блоке try, и его можно поймать и откатить в случае ошибки. Пожалуйста, объясните, является ли B правильным и почему. Спасибо!
Редактировать : То есть я не получаю ответ, который ищу. Я уже знаю , что B как-то "плохо", я ищу , почему это плохо; то есть, есть ли возможная ситуация, когда A будет работать, где B не получится?
-tjw