繁体   English   中英

捕获Swing GUI应用程序中的异常

[英]Catching Exceptions in Swing GUI application

我有一个GUI Swing应用程序。

有没有办法捕捉所有异常?

我有一个数据库类,它包含我的数据库JDBC对象。

它在我的Swing GUI类中声明为一个字段。

e.g. 

public class MySwingGUI {

  protected Database database = new Database();

因此,如果任何异常从GUI代码中的某处传播,我想以某种方式处理它,以便我可以关闭数据库连接。

有任何想法吗?

实际上,您的代码应该捕获异常发生的位置,并适当地处理它们。 只需在适当的退出条件下关闭数据库。

UI线程上的任何未处理的异常都将使应用程序崩溃。 在这种情况下,您无需担心关闭数据库; 该应用已死。

您可能正在寻找的是未捕获的异常处理程序。 只需在UI线程上设置未捕获的异常处理程序。

请参阅UncaughtExceptionHandler doc

这更适合调试。 它不是处理错误的好方法。

另一种处理Swing异常的方法。 你可以使用这样的东西。

public class EventQueueProxy extends EventQueue {

    private static final Logger logger = Logger.getLogger( EventQueueProxy.class.getName() );

    protected void dispatchEvent( AWTEvent newEvent )
    {
        try {
            super.dispatchEvent( newEvent );
        } catch( RuntimeException | Error e ) {
            logger.error(e.getCause(),e);            
            JOptionPane.showMessageDialog( null, "someDescriptiveMessage");
        }
    }
}

您可以使用辅助方法来设置它

    public static void captureUncaughtExceptionInEvent()
    {

            EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
            queue.push(new EventQueueProxy());
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM