OpenJDK / jigsaw / jake / jdk
changeset 4449:d4ab25d65adb
6380161: (reflect) Exception from newInstance() not chained to cause.
Reviewed-by: dholmes, lancea, forax
author | darcy |
---|---|
date | Mon, 08 Aug 2011 09:07:43 -0700 |
parents | 94934ebbb654 |
children | 0f1b4b3bc833 |
files | src/share/classes/java/lang/Class.java |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/lang/Class.java Mon Aug 08 13:20:16 2011 +0100 +++ b/src/share/classes/java/lang/Class.java Mon Aug 08 09:07:43 2011 -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; }