Is there a better way to throw this exception?

Weijun Wang at
Thu Jun 6 02:42:53 PDT 2013

Hi All

I have a method that could throw two kinds of checked exceptions and 
possibly other unchecked ones:

    void once() throws One, Two

Now I have a wrapper method that calls once() for multiple times, and 
want to throw the first exception if *all* fails. Now it looks like

    void multiple() throws One, Two {
       Exception saved = null;
       for (all chances) {
          try {
          } catch (Exception e) {
             if (saved != null) saved = e;
       if (saved instanceof One) {
          throw (One)saved;
       } else if (saved instanceof One) {
          throw (Two)saved;
       } else if (saved instanceof RuntimeException) {
          throw (RuntimeException)saved;
       } else {
          // Not likely, but I've already wrote so many lines.
          throw new RuntimeException(saved);

Is there any way I can make it shorter?


More information about the compiler-dev mailing list