Looks fine to me Joe Best Lance On Aug 8, 2011, at 1:24 AM, Joe Darcy wrote:
> Hello. > > Please review this small fix, developed after I went through my open bug > list; patch below, webrev at: > > 6380161 (reflect) Exception from newInstance() not chained to cause. > http://cr.openjdk.java.net/~darcy/6380161.0/ > > Several call to initCause are added to plumb up caused-by exception chains to > exception types without constructors taking a cause. In addition, > multi-catch is added in on location. > > I looked for similar issues in Constructor, Method, and Executable, but there > weren't any. > > Thanks, > > -Joe > > --- old/src/share/classes/java/lang/Class.java 2011-08-07 > 22:21:58.000000000 -0700 > +++ new/src/share/classes/java/lang/Class.java 2011-08-07 > 22:21:58.000000000 -0700 > @@ -349,7 +349,8 @@ > }); > cachedConstructor = c; > } catch (NoSuchMethodException e) { > - throw new InstantiationException(getName()); > + throw (InstantiationException) > + new InstantiationException(getName()).initCause(e); > } > } > Constructor<T> tmpConstructor = cachedConstructor; > @@ -973,7 +974,8 @@ > descriptor = (String) enclosingInfo[2]; > assert((name != null && descriptor != null) || name == > descriptor); > } catch (ClassCastException cce) { > - throw new InternalError("Invalid type in enclosing method > information"); > + throw (InternalError) > + new InternalError("Invalid type in enclosing method > information").initCause(cce); > } > } > @@ -1239,7 +1241,8 @@ > try { > return getName().substring(enclosingClass.getName().length()); > } catch (IndexOutOfBoundsException ex) { > - throw new InternalError("Malformed class name"); > + throw (InternalError) > + new InternalError("Malformed class name").initCause(ex); > } > } > @@ -2954,9 +2957,8 @@ > } > // These can happen when users concoct enum-like classes > // that don't comply with the enum spec. > - catch (InvocationTargetException ex) { return null; } > - catch (NoSuchMethodException ex) { return null; } > - catch (IllegalAccessException ex) { return null; } > + catch (InvocationTargetException | NoSuchMethodException | > + IllegalAccessException ex) { return null; } > } > return enumConstants; > } > Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 lance.ander...@oracle.com