6
正如你可能知道,標準的SWT主循環看起來是這樣的:Java SWT:將主循環封裝在異常處理程序中?
Display display = new Display();
Shell shell = new Shell(display);
...
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
最近,我有一個論據與它是否將是有意義的包裝在一個try-catch主迴路的同事一樣,所以:
Display display = new Display();
Shell shell = new Shell(display);
...
shell.open();
while (!shell.isDisposed()) {
try {
if (!display.readAndDispatch()) {
display.sleep();
}
} catch (RuntimeException e) {
// TODO Implement exception handler
}
}
display.dispose();
我的同事說,做這種方式,您將不必立即關閉應用程序,如果在GUI線程發生崩潰,因此用戶可以有機會在關閉之前保存自己的數據程序。
那麼,您怎麼看?做這樣的事情有意義嗎?
是的,定義非常好風格,但請注意,空異常捕獲是非常非常糟糕的事情。因爲那時異常會丟失,調試成爲一場噩夢。我假設你真的在哪裏執行該捕獲。如果您必須調試此類代碼,那麼Eclipse在出現任何特定異常時調試器都會中斷,因此具有非常好的異常斷點處理能力。 – 2011-01-31 17:55:51