簡體   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