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
.