java - 在 JOptionPane 中打印堆栈跟踪

标签 java printing error-handling stack-trace joptionpane

我的问题: 我如何将文本 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/

相关文章:

java - 是否可以在 Fresco Lib 上加载 SVG?

java - PDFBox:如何使用指定的打印机打印 pdf?

error-handling - 如何在剧本级别执行ansible错误处理?

android - AdMob错误: “You must have AdActivity declared in AndroidManifest.xml with configChanges”

java - 使用另一个Java文件运行Java文件时出错

java - 无法使用 riak 进行映射缩减

java - 在 Java 中向展开的 map 添加标记

java - Errors/BindingResult 参数应在模型属性、@RequestBody 或 @RequestPart 参数之后立即声明

javascript - 打印分页表(simplePagination.js by flaviusmatis)

javascript - 打印时尝试将 div 带到最后一页的页脚