Hello Shafi,
You could do something like this:
+ public static void error(AgentConfigurationError e) {
+ String keyText = getText(e.getError());
+ String params = e.getParams();
+
+ System.err.print(getText("agent.err.error") + ": " + keyText);
+
+ if (params != null && params.length != 0) {
+ StringBuffer message = new StringBuffer(params[0]);
+ for (int i = 1; i < params.length; i++) {
+ message.append(" " + params[i]);
+ }
+ System.err.println(": " + message);
+ }
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
This error() variant first prints the 'error' and 'params' of the
AgentConfigurationError and then prints the complete stack trace (including the
cause).
Daniel,
Originally, if the stack trace was intentionally ignored to keep the error
message short, then I think just printing the 'cause' instead of complete stack
trace would also be sufficient in getting to the cause of the error here.
Instead of
e.printStackTrace();
we can just do:
System.err.println("Caused by: " + e.getCause());
Thanks,
Poonam
> -----Original Message-----
> From: Daniel Fuchs
> Sent: Thursday, April 13, 2017 2:25 AM
> To: David Holmes; Shafi Ahmad; [email protected]
> Subject: Re: [jdk10] RFR for 'JDK-8177721: Improve diagnostics in
> sun.management.Agent#startAgent()
>
> On 13/04/2017 02:15, David Holmes wrote:
> > Overall the exception management in this code looks like it predate
> > the existence of an "exception cause" and should probably be updated
> > to utilize that more effectively.
>
> Hi David,
>
> I think the original idea was to display a localized message to the end
> user - and not frighten him with a big unlocalized stack trace.
>
> But I otherwise agree with your suggestion.
>
> best regards,
>
> -- daniel