Java:在 GUI 中显示崩溃,但禁止显示警告

标签 java stderr standard-error

对于桌面应用程序,在程序崩溃时查看 GUI 上的堆栈跟踪很有用。我通过用我自己的错误处理程序替换 System.err 在 Java 中实现了这一点,它将所有错误消息重定向到一个 GUI 组件和一个文本文件。

问题:相当多的库(例如 Apache POI)不仅在发生崩溃时写入 System.err,它们还会输出简单的警告消息。这会导致崩溃窗口不必要地弹出。 所以我的问题是,有人知道如何 (1) 在程序崩溃时显示堆栈跟踪,而 (2) 在出现警告消息时不显示它吗?

[编辑] 我的 GUI 是用 SWT 编写的。

最佳答案

您可以安装自己的异常处理程序。此处解释了一种 Swing 技术:http://ruben42.wordpress.com/2009/03/30/catching-all-runtime-exceptions-in-swing/ .埃里克伯克也有 nice article on this topic .另一种通用技术是使用 Thread.setDefaultUncaughtExceptionHandler ,当线程因异常而死亡时调用(根据第一篇引用文章中的评论,Swing 线程不会死亡,因此设置未捕获的异常处理程序对 Swing 不起作用,但 Eric 的文章使用了此技术)。

然后您的异常处理程序可以显示错误、记录错误或执行任何您想要的操作,而无需关心使用标准输出/错误流的其他代码。

关于Java:在 GUI 中显示崩溃,但禁止显示警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190650/

相关文章:

powershell - 如何在不污染 PowerShell 错误输出的情况下重定向 stdout 和 stderr

python 调用外部cmd并将stdout重定向到文件

R使用bootstrap计算标准误差

r - 拟合具有稳健标准误差的模型

r - R中的Heckman手动选择模型

java - Selenium Webdriver Java : Unable to perform click operation by Actions in Chrome

java - 包含 5 个数字或没有数字的字符串的正则表达式

java - 在 Java 中,有没有办法在每次将某些内容写入 stderr 时获取回调?

java - Java Swing 中的面板向左浮动并带有垂直条

java - 如何从 Java 中的 CopyOnWriteArrayList 中获取底层静态数组?