RFR: 8201274: Launch Single-File Source-Code Programs

mandy chung mandy.chung at oracle.com
Wed Apr 25 03:37:31 UTC 2018



On 4/25/18 8:53 AM, Jonathan Gibbons wrote:
>
>
> On 04/12/2018 10:20 PM, mandy chung wrote:
>
>>
>> This looks quite good to me.  One small comment on the source 
>> launcher Main class:
>>
>>   122         } catch (InvocationTargetException e) {
>>   123             // leave VM to handle the stacktrace, in the standard manner
>>   124             throw e.getTargetException();
>>   125         }
>>   387         } catch (InvocationTargetException e) {
>>   388             // remove stack frames for source launcher
>>   389             int invocationFrames = e.getStackTrace().length;
>>   390             Throwable target = e.getTargetException();
>>   391             StackTraceElement[] targetTrace = target.getStackTrace();
>>   392             target.setStackTrace(Arrays.copyOfRange(targetTrace, 0, targetTrace.length - invocationFrames));
>>   393             throw e;
>>   394         }
>>
>> This could simply throw target instead of the InvocationTargetException
>> and then the main method can propagate the target, if thrown.
>>
>> Mandy
>
> Mandy,
>
> Yes, but that would require the execute method and its callers to 
> declare that they throw Throwable,
> or at least Exception. Since the exception is already wrapped, it 
> seems better to propagate the
> wrapped exception, and to only unwrap it at the last moment.
>

Either way works for me.

Mandy




More information about the build-dev mailing list