JDK 8 code review request for 6380161 (reflect) Exception from newInstance() not chained to cause.
Joe Darcy
joe.darcy at oracle.com
Mon Aug 8 16:08:58 UTC 2011
David, Lance, and Rémi,
Thanks for the prompt reviews,
-Joe
Rémi Forax wrote:
> 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