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

Java:在GUI中显示崩溃,但不显示警告,java,stderr,standard-error,Java,Stderr,Standard Error,对于桌面应用程序,当程序崩溃时,在GUI上查看stacktrace非常有用。我在Java中实现了这一点,用自己的错误处理程序替换System.err,将所有错误消息重定向到GUI组件和文本文件 问题是:相当多的库(例如ApachePOI)在崩溃发生时不仅会写入System.err,还会输出简单的警告消息。这会导致碰撞窗口不必要地弹出。 所以我的问题是,有人知道如何(1)在程序崩溃时显示stacktrace,而(2)在出现警告消息时不显示stacktrace吗 [编辑]我的GUI是用SWT编写的。

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

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


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

您可以安装自己的异常处理程序。这里介绍了一种Swing技术:。埃里克·伯克也有。另一种通用技术是使用,当线程因异常而死亡时调用(根据第一篇引用文章中的注释,Swing线程不会死亡,因此设置未捕获的异常处理程序对Swing不起作用,但Eric的文章使用了这种技术)


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

您可以安装自己的异常处理程序。这里介绍了一种Swing技术:。埃里克·伯克也有。另一种通用技术是使用,当线程因异常而死亡时调用(根据第一篇引用文章中的注释,Swing线程不会死亡,因此设置未捕获的异常处理程序对Swing不起作用,但Eric的文章使用了这种技术)


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

我认为您从错误的角度处理问题。当出现异常时,您应该弹出一个对话框,而不仅仅是当System.err有输出时。System.err更像一个日志记录实用程序

对于所有选中的异常,您应该在代码中逐个处理它们。要么弹出对话框,记录它们,要么忽略它们(但在这种情况下,请确保这样做确实安全)


要捕获任何剩余的未检查异常,您可以执行以下操作:,以确保获得这些异常。

我认为您从错误的角度处理问题。当出现异常时,您应该弹出一个对话框,而不仅仅是当System.err有输出时。System.err更像一个日志记录实用程序

对于所有选中的异常,您应该在代码中逐个处理它们。要么弹出对话框,记录它们,要么忽略它们(但在这种情况下,请确保这样做确实安全)

要捕获任何剩余的未检查异常,可以执行如下操作:,以确保获得这些异常