- 我想避免在多個位置寫入
errorCount += 1
。 - 我在尋找一個更好的方式比
success = False try: ... else: success = True finally: if success: storage.store.commit() else: storage.store.rollback()
- 我試圖避免在每個
store.rollback()
除外條款。
有關如何做到這一點的任何想法?嘗試...除...以外...:如何避免重複代碼
count = 0
successCount = 0
errorCount = 0
for row in rows:
success = False
count += 1
newOrder = storage.RepeatedOrder()
storage.store.add(newOrder)
try:
try:
newOrder.customer = customers[row.customer_id]
except KeyError:
raise CustomerNotFoundError, (row.customer_id,)
newOrder.nextDate = dates[row.weekday]
_fillOrder(newOrder, row.id)
except CustomerNotFoundError as e:
errorCount += 1
print u"Error: Customer not found. order_id: {0}, customer_id: {1}".format(row.id, e.id)
except ProductNotFoundError as e:
errorCount += 1
print u"Error: Product not found. order_id: {0}, product_id: {1}".format(row.id, e.id)
else:
success = True
successCount += 1
finally:
if success:
storage.store.commit()
else:
storage.store.rollback()
print u"{0} of {1} repeated orders imported. {2} error(s).".format(successCount, count, errorCount)
我想你們誤解了我的問題。 – 2009-05-18 12:35:04