0

我的问题:如何将文本 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 窗口,该窗口没有我成功识别问题所需的所有信息

提前致谢 :)

4

1 回答 1

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.

于 2013-01-20T03:19:20.093 回答