diff --git a/src/ZODB/Transaction.py b/src/ZODB/Transaction.py
index 2593e5de8ad86bd876f03354cba466006488b6e4..795e315aa552f22c495e57f2b150cd3c5ce5b0e9 100644
--- a/src/ZODB/Transaction.py
+++ b/src/ZODB/Transaction.py
@@ -13,8 +13,8 @@
 ##############################################################################
 """Transaction management
 
-$Id: Transaction.py,v 1.34 2002/03/08 02:09:21 jeremy Exp $"""
-__version__='$Revision: 1.34 $'[11:-2]
+$Id: Transaction.py,v 1.35 2002/04/12 18:29:15 jeremy Exp $"""
+__version__='$Revision: 1.35 $'[11:-2]
 
 import time, sys, struct, POSException
 from struct import pack
@@ -276,7 +276,7 @@ class Transaction:
                     # Bug if it does, we need to yell FIRE!
                     # Someone finished, so don't allow any more
                     # work without at least a restart!
-                    hosed=1
+                    hosed = 1
                     LOG('ZODB', PANIC,
                         "A storage error occurred in the last phase of a "
                         "two-phase commit.  This shouldn\'t happen. "
@@ -287,7 +287,7 @@ class Transaction:
                     raise
                 
             except:
-                t,v,tb=sys.exc_info()
+                t, v, tb = sys.exc_info()
 
                 # Ugh, we got an got an error during commit, so we
                 # have to clean up.
@@ -295,32 +295,42 @@ class Transaction:
                 # First, we have to abort any uncommitted objects.
                 for o in objects[ncommitted:]:
                     try:
-                        j=getattr(o, '_p_jar', o)
-                        if j is not None: j.abort(o, self)
-                    except: pass
+                        j = getattr(o, '_p_jar', o)
+                        if j is not None:
+                            j.abort(o, self)
+                    except:
+                        pass
 
                 # Then, we unwind TPC for the jars that began it.
                 if jarsv is None:
                     jarsv = jars.values()
                 for j in jarsv:
-                    try: j.tpc_abort(self) # This should never fail
+                    try:
+                        j.tpc_abort(self) # This should never fail
                     except:     
                         LOG('ZODB', ERROR,
                             "A storage error occured during object abort "
-                            "This shouldn\'t happen. ",
+                            "This shouldn't happen. ",
                             error=sys.exc_info())
                 
                 # Ugh, we need to abort work done in sub-transactions.
                 while subjars:
-                    j=subjars.pop()
-                    j.abort_sub(self) # This should never fail
+                    j = subjars.pop()
+                    try:
+                        j.abort_sub(self) # This should never fail
+                    except:
+                        LOG('ZODB', ERROR,
+                            "A storage error occured during sub-transaction "
+                            "object abort.  This shouldn't happen.",
+                            error=sys.exc_info())
 
-                raise t,v,tb
+                raise t, v, tb
 
         finally:
-            tb=None
+            tb = None
             del objects[:] # clear registered
-            if not subtransaction and self._id is not None: free_transaction()
+            if not subtransaction and self._id is not None:
+                free_transaction()
 
     def register(self,object):
         'Register the given object for transaction control.'