My question: How can i put the text e.printStackTrace prints into a JOptionPane window
My code is currently as follows:
excuse the poor formatting 😛
try {
//SOME CODE
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,
"An unexpected error has occurred:n" + e.getMessage() + 'n' + Thread.currentThread().getStackTrace() + "nPlease send this error to ." + email + "nThanks for your help.",
"Error", JOptionPane.ERROR_MESSAGE);
}
this both prints the stack trace in the command line interface(i am using terminal) and it creates a JOptionPane but NOT with the same info as e.printStackTrace(). when running my program from a jar file, the command line interface won’t be visible so the user will only get the JOptionPane window which doesnt have all of the info i need to succesfully identify the problem
Thanks in advance 🙂
Advertisement
Answer
Here, This is just some general code I came up with that will get you the same output as e.printStackTrace()
.
try {
// some code
} catch (Exception e) {
StringBuilder sb = new StringBuilder(e.toString());
for (StackTraceElement ste : e.getStackTrace()) {
sb.append("ntat ");
sb.append(ste);
}
String trace = sb.toString();
// Now, trace contains the stack trace
// (However, you can only use it inside the catch block)
}
However, as was previously mentioned, you probably want a window in which you can scroll, as I don’t think it’d fit very well in a JOptionPane
.