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