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