# Verify that exc_info is present and matches exc, then clear it, and
# check that it worked.
def clear_check(exc):
- typ, value, traceback = sys.exc_info()
- self.assert_(typ is not None)
- self.assert_(value is exc)
- self.assert_(traceback is not None)
+ typ, value, traceback = sys.exc_info()
+ self.assert_(typ is not None)
+ self.assert_(value is exc)
+ self.assert_(traceback is not None)
- sys.exc_clear()
+ sys.exc_clear()
- typ, value, traceback = sys.exc_info()
- self.assert_(typ is None)
- self.assert_(value is None)
- self.assert_(traceback is None)
+ typ, value, traceback = sys.exc_info()
+ self.assert_(typ is None)
+ self.assert_(value is None)
+ self.assert_(traceback is None)
def clear():
- try:
- raise ValueError, 42
- except ValueError, exc:
- clear_check(exc)
+ try:
+ raise ValueError, 42
+ except ValueError, exc:
+ clear_check(exc)
# Raise an exception and check that it can be cleared
clear()
# Verify that a frame currently handling an exception is
# unaffected by calling exc_clear in a nested frame.
try:
- raise ValueError, 13
+ raise ValueError, 13
except ValueError, exc:
- typ1, value1, traceback1 = sys.exc_info()
- clear()
- typ2, value2, traceback2 = sys.exc_info()
-
- self.assert_(typ1 is typ2)
- self.assert_(value1 is exc)
- self.assert_(value1 is value2)
- self.assert_(traceback1 is traceback2)
+ typ1, value1, traceback1 = sys.exc_info()
+ clear()
+ typ2, value2, traceback2 = sys.exc_info()
+
+ self.assert_(typ1 is typ2)
+ self.assert_(value1 is exc)
+ self.assert_(value1 is value2)
+ self.assert_(traceback1 is traceback2)
# Check that an exception can be cleared outside of an except block
clear_check(exc)