Followup to r61011: Also avoid the reference cycle when the Thread's target
raises an exception.
diff --git a/Lib/threading.py b/Lib/threading.py
index 2f472b4..005d40c 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -442,11 +442,13 @@
         _sleep(0.000001)    # 1 usec, to let the thread run (Solaris hack)
 
     def run(self):
-        if self.__target:
-            self.__target(*self.__args, **self.__kwargs)
-        # Avoid a refcycle if the thread is running a function with an
-        # argument that has a member that points to the thread.
-        del self.__target, self.__args, self.__kwargs
+        try:
+            if self.__target:
+                self.__target(*self.__args, **self.__kwargs)
+        finally:
+            # Avoid a refcycle if the thread is running a function with
+            # an argument that has a member that points to the thread.
+            del self.__target, self.__args, self.__kwargs
 
     def __bootstrap(self):
         # Wrapper around the real bootstrap code that ignores