[英]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.