我的问题: 如何将文本e.printStackTrace打印到JOptionPane窗口
我的代码目前如下:
原谅糟糕的格式:P
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);
}
这两者都在命令行界面打印堆栈跟踪(我正在使用终端),它创建了一个JOptionPane但没有与e.printStackTrace()相同的信息。当从jar文件运行我的程序时,命令行界面将不可见,因此用户将只获得JOptionPane窗口,该窗口没有我成功识别问题所需的所有信息
提前致谢:)
答案 0 :(得分:6)
在这里,这只是我提出的一些通用代码,它将为您提供与e.printStackTrace()
相同的输出。
try {
// some code
} catch (Exception e) {
StringBuilder sb = new StringBuilder(e.toString());
for (StackTraceElement ste : e.getStackTrace()) {
sb.append("\n\tat ");
sb.append(ste);
}
String trace = sb.toString();
// Now, trace contains the stack trace
// (However, you can only use it inside the catch block)
}
但是,如前所述,您可能需要一个可以滚动的窗口,因为我认为它不适合JOptionPane
。