2011-01-30 33 views
6

Bildiğiniz gibi, standart SWT ana döngü şöyle görünür:Java SWT: Ana döngüyü özel durum işleyicisine sarın mı?

Display display = new Display(); 
Shell shell = new Shell(display); 
... 
shell.open(); 
while (!shell.isDisposed()) { 
    if (!display.readAndDispatch()) { 
    display.sleep(); 
    } 
} 
display.dispose(); 

Son zamanlarda, gibi, bir try-catch ana döngüyü sarmak için mantıklı olup olmayacağı hakkında bir meslektaşı ile bir tartışma vardı böylece:

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(); 

meslektaşım dolayısıyla kullanıcı kapatmadan önce onun verileri kaydetmek için bir şans olabilir, bunu GUI dizisindeki bir kilitlenme olursa hemen uygulamayı kapatmaya gerek kalmayacak bu şekilde yapıyor diyor programı.

Peki, sizce ne düşünüyorsunuz? Böyle bir şey yapmak mantıklı mı?

cevap

6

Bunu yapmak için çok iyi bir stil çünkü GUI kodunuzda herhangi bir Özel Durum gerçekleşebilir. Bu konumdaki genel bir BugReport göndericimiz var ve bunu seviyorum çünkü hiçbir şey kaybolmuyor ve uygulama hata raporundan sonra çalışmaya devam ediyor (çoğunlukla;).

+0

Evet, kesinlikle çok iyi bir stil, ama boş istisna yakalar dikkat edin çok çok kötü bir şey olduğunu lütfen. Çünkü o zaman istisna kaybolur ve hata ayıklama bir kabusa dönüşür. Uygulamayı gerçekten nereye götürdüğünüzü kabul ediyorum. Bu tür bir kodda hata ayıklamak zorunda kalırsanız, Eclipse, hata ayıklayıcının belirli bir özel durumun söz konusu olduğu yerde çok iyi bir istisna kesme noktası işlemeye sahiptir. –

+1

Söylediğim gibi ... Özel Durum ile başa çıkıyorum ve bir yarı otomatik gönderme (kullanıcı "tamam" tıklatmak zorundadır) hata bildirimi, yayıncıya özel durum için. – Daniel

İlgili konular