Proxy.java, [...]: Don't catch java.lang.ThreadDeath.
authorJeroen Frijters <jeroen@frijters.net>
Tue, 22 Feb 2005 21:11:29 +0000 (21:11 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Tue, 22 Feb 2005 21:11:29 +0000 (21:11 +0000)
2005-02-22  Jeroen Frijters  <jeroen@frijters.net>

* java/lang/reflect/Proxy.java,
java/net/URL.java,
java/security/SecureRandom.java,
java/util/Timer.java,
java/util/prefs/AbstractPreferences.java:
Don't catch java.lang.ThreadDeath.

From-SVN: r95415

libjava/ChangeLog
libjava/java/lang/reflect/Proxy.java
libjava/java/net/URL.java
libjava/java/security/SecureRandom.java
libjava/java/util/Timer.java
libjava/java/util/prefs/AbstractPreferences.java

index 5c99a7834171d7a819d78ed520d5c68093debbdd..ac99d3b2f15e1d51e76474af38a4d30847f18b8f 100644 (file)
@@ -1,3 +1,12 @@
+2005-02-22  Jeroen Frijters  <jeroen@frijters.net>
+
+       * java/lang/reflect/Proxy.java,
+       java/net/URL.java,
+       java/security/SecureRandom.java,
+       java/util/Timer.java,
+       java/util/prefs/AbstractPreferences.java:
+       Don't catch java.lang.ThreadDeath.
+
 2005-02-22  David Gilbert  <david.gilbert@object-refinery.com>
 
        * java/awt/font/TransformAttribute.java,
index dc65fca737b64685bb8ed8a6dacdf9c0d3951360..3f13254fdc3c7a4b97b782d5d008edddfac1b84e 100644 (file)
@@ -1347,7 +1347,7 @@ public class Proxy implements Serializable
 
           return clazz;
         }
-      catch (Throwable e)
+      catch (Exception e)
         {
           // assert false;
           throw (Error) new InternalError("Unexpected: " + e).initCause(e);
index 96f97991280e4b4331e2d1e2151ccc22adfe4a6c..7ab30513b7c2452be51c721cef3c0dc7b2910fef 100644 (file)
@@ -1,5 +1,5 @@
 /* URL.java -- Uniform Resource Locator Class
-   Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
+   Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
@@ -918,6 +918,10 @@ public final class URL implements Serializable
                Class c = Class.forName(clsName, true, systemClassLoader);
                ph = (URLStreamHandler) c.newInstance();
              }
+            catch (ThreadDeath death)
+              {
+                throw death;
+              }
            catch (Throwable t) { /* ignored */ }
          }
         while (ph == null && pkgPrefix.hasMoreTokens());
index 5ae1fa2934b37e451f8eac7de753f20f16b102cd..43841b274f28635d3a6befd41d002b399c0bf7c6 100644 (file)
@@ -112,6 +112,10 @@ public class SecureRandom extends Random
                         provider = p[i];
                         return;
                       }
+                    catch (ThreadDeath death)
+                      {
+                        throw death;
+                      }
                     catch (Throwable t)
                      {
                        // Ignore.
index e4eb246a1db3dccd94a14354f24e4b96ad490591..3c7223b2782e7abb6d9e1efd409fa02918e667fb 100644 (file)
@@ -343,6 +343,12 @@ public class Timer
                {
                  task.run();
                }
+              catch (ThreadDeath death)
+                {
+                  // If an exception escapes, the Timer becomes invalid.
+                  queue.stop();
+                  throw death;
+                }
              catch (Throwable t)
                {               
                  /* ignore all errors */
index 69f4426e6d3439bdfad16bbead940f3b217a9281..159a887c831db223e3eee2c274ea38a67757db81 100644 (file)
@@ -550,6 +550,8 @@ public abstract class AbstractPreferences extends Preferences {
             String value;
             try {
                 value = getSpi(key);
+            } catch (ThreadDeath death) {
+                throw death;
             } catch (Throwable t) {
                 value = null;
             }