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

对于桌面应用程序,在程序崩溃时查看GUI上的堆栈跟踪很有用。我在Java中实现了这一点,将System.err替换为我自己的错误处理程序,该错误处理程序将所有错误消息重定向到GUI组件和文本文件。 问题:相当多的库(例如Apache POI)不仅在发生崩溃时写入System.err,它们还输出简单的警告消息。这会导致崩溃窗口不必要地弹出。 所以我的问题是,是否有人知道如何(1)在程序崩溃时显示堆栈跟踪,而(2)在警告消息的情况下不显示它? [编辑]我的GUI是用SWT编写的。     
已邀请:
您可以安装自己的异常处理程序。这里解释了Swing的一种技术:http://ruben42.wordpress.com/2009/03/30/catching-all-runtime-exceptions-in-swing/。 Eric Burke也有关于这个主题的好文章。另一种通用技术是使用
Thread.setDefaultUncaughtExceptionHandler
,当线程因异常而死时调用(根据第一篇引用文章中的注释,Swing线程不会死,因此设置未捕获的异常处理程序不适用于Swing,但Eric的文章使用此技术)。 然后,您的异常处理程序可以显示错误,记录它或执行您想要的任何操作,而无需关心使用标准输出/错误流的其他代码。     
我认为你是从错误的角度来解决这个问题。当存在异常时,您应该弹出一个对话框,而不仅仅是在输出到System.err时。 System.err更像是一个日志实用程序。 对于所有已检查的异常,您应该在代码中逐个处理它们。要么弹出一个对话框,记录它们,要么忽略它们(但在这种情况下,确保这样做是非常安全的) 要捕获任何剩余的未经检查的异常,您可以执行以下操作:http://www.javaspecialists.eu/archive/Issue081.html,以确保您获得这些异常。     

要回复问题请先登录注册