我的问题: 我如何将文本 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 窗口,该窗口不包含我成功识别问题所需的所有信息
提前致谢:)
最佳答案
这里,这只是我想出的一些通用代码,它将获得与 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
。
关于java - 在 JOptionPane 中打印堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14421229/