Fixed #7241 -- More robust exception catching in the transaction management

code. As pointed out in the ticket, Python still lets you raise all sorts of
odd things as exceptions (e.g. strings), so even though they're bad form, we
should still handle them. We do that cleanly now. Thanks to jim-django@dsdd.org
for the patch.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8419 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2008-08-17 00:07:06 +00:00
parent 2d2396a384
commit 260510453f
1 changed files with 2 additions and 4 deletions

View File

@ -236,10 +236,8 @@ def commit_on_success(func):
managed(True) managed(True)
try: try:
res = func(*args, **kw) res = func(*args, **kw)
except (Exception, KeyboardInterrupt, SystemExit): except:
# (We handle KeyboardInterrupt and SystemExit specially, since # All exceptions must be handled here (even string ones).
# they don't inherit from Exception in Python 2.5, but we
# should treat them uniformly here.)
if is_dirty(): if is_dirty():
rollback() rollback()
raise raise