Pregunta

Para las aplicaciones de escritorio, es útil para ver la StackTrace en la interfaz gráfica de usuario cuando el programa se bloquea. He implementado esto en Java mediante la sustitución de System.err con mi propio gestor de errores, que redirige todos los mensajes de error a un componente de interfaz gráfica de usuario y un archivo de texto.

El problema: Un buen número de bibliotecas por ahí (por ejemplo Apache POI) no sólo escribimos a System.err cuando se produce un accidente, También simples mensajes de advertencia de salida. Esto hace que la ventana de choque para que aparezca de forma innecesaria. Así que mi pregunta es, ¿alguien sabe cómo (1) muestran la StackTrace cuando el programa se bloquea, mientras que (2) no mostrarlo en el caso de los mensajes de advertencia?

[Editar] Mi interfaz gráfica de usuario está escrita en SWT.

¿Fue útil?

Solución

Puede instalar propios controladores de excepciones. Una técnica para oscilación es explicado aquí: http : //ruben42.wordpress.com/2009/03/30/catching-all-runtime-exceptions-in-swing/ . Eric Burke también tiene buen artículo sobre este tema . Otra técnica general está utilizando Thread.setDefaultUncaughtExceptionHandler , que se llama cuando muere hilo debido a excepción (de acuerdo a los comentarios en el artículo primero que se hace referencia, hilo de oscilación no muere, por lo que establecer controlador de excepciones no funciona para swing , pero el artículo de Eric utiliza esta técnica).

Su manejador de excepciones a continuación, puede mostrar el error, inicie una sesión, o hacer cualquier cosa que desee, sin preocuparse por otro código usando corrientes de salida / error estándar.

Otros consejos

creo que está abordando el problema desde el ángulo equivocado. Usted debe estar apareciendo un diálogo cuando hay excepciones, no sólo cuando hay salida a System.err. System.err se parece más a una utilidad de registro.

Para todas las excepciones confirmados, se debe manejarlos caso por caso en el código. Ya sea que aparezca un cuadro de diálogo, registrarlos, o ignorarlas (pero en ese caso, asegúrese de que es realmente seguro hacerlo)

Para capturar las excepciones sin marcar, los restantes, se puede hacer algo como esto: http: // www .javaspecialists.eu / archivo / Issue081.html , para asegurarse de que está obteniendo los.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top