JDK 8 code review request for 6380161 (reflect) Exception from newInstance() not chained to cause.
Rémi Forax
forax at univ-mlv.fr
Mon Aug 8 14:25:19 UTC 2011
Agree, looks good.
Rémi
On 08/08/2011 03:41 PM, Lance Andersen - Oracle wrote:
> 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.Andersen at oracle.com
>
More information about the core-libs-dev
mailing list