2011-01-30 6 views
6

Como usted sabe, el bucle principal estándar SWT se ve así:Java SWT: ¿Ajustar el bucle principal en el manejador de excepciones?

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

Recientemente, tuve una discusión con un colega sobre si tendría sentido para envolver el bucle principal en un try-catch, como por lo que:

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

Mi colega dice hacerlo de esta manera usted no tendrá que cerrar inmediatamente la solicitud, si se produce un accidente en el hilo de interfaz gráfica de usuario, por lo tanto, el usuario puede tener la oportunidad de salvar sus datos antes de cerrar la programa.

Entonces, ¿qué opinas? ¿Tiene sentido hacer tal cosa?

Respuesta

6

Es un muy buen estilo para hacerlo, ya que cualquier excepción puede ocurrir en su código GUI. Tenemos un remitente genérico de BugReport en esta ubicación, y me encanta, porque no se pierde nada y la aplicación continúa funcionando después del informe de errores (principalmente;)).

+0

Sí, definitivamente un estilo muy bueno, pero tenga en cuenta que las capturas de excepción vacías es algo muy malo. Porque entonces se pierde la excepción y la depuración se convierte en una pesadilla. Supongo que realmente vas a implementar la captura. Si alguna vez tiene que depurar este tipo de código, Eclipse tiene una buena excepción en el manejo de punto de interrupción donde el depurador se rompe en cualquier excepción en particular. –

+1

Como dije ... Manejo la Excepción, registrándola Y enviando un informe de error semiautomático (el usuario tiene que hacer clic en "ok") para la excepción a nuestro issuetracker. – Daniel

Cuestiones relacionadas