Mostrar información de depuración de excepción a los usuarios

Actualmente estoy trabajando en agregar excepciones y el manejo de excepciones a mi aplicación OSS. Las excepciones han sido la idea general desde el principio, pero quería encontrar un buen marco de excepción y, con toda honestidad, comprender un poco mejor las convenciones y los modismos de manejo de excepciones de C ++ antes de comenzar a usarlos. Tengo mucha experiencia con C # /. Net, Python y otros lenguajes que usan excepciones. No soy ajeno a la idea (pero lejos de ser un maestro).

En C # y Python, cuando se produce una excepción no controlada, el usuario obtiene un buen seguimiento de la pila y, en general, una gran cantidad demuy útil Información de depuración inestimable. Si está trabajando en una aplicación OSS, hacer que los usuarios peguen esa información en informes de problemas es ... bueno, digamos que me resulta difícil vivir sin eso. Para este proyecto de C ++, obtengo "La aplicación se bloqueó", o de usuarios más informados, "Hice X, Y y Z, y luego se estrelló". ¡Pero quiero esa información de depuración también!

Ya (y con gran dificultad) he hecho las paces con el hecho de que nunca veré una forma de multiplataforma y compilación cruzada para obtener un seguimiento de la pila de excepciones de C ++, pero sé que puedo obtener el nombre de la función y otros informacion relevante.

Y ahora quiero eso para mis excepciones no manejadas. Estoy usandoimpulso :: excepción, y tienen esto muy bonitoinformación de diagnóstico thingamajig que puede imprimir el nombre de la función (no enredada), el archivo, la línea y, lo que es más importante, otra información específica de la excepción que el programador agregó a esa excepción.

Naturalmente, estaré manejando excepciones dentro del código siempre que pueda, pero no soy tan ingenuo como para pensar que no dejaré que un par se escape (sin querer, por supuesto).

Así que lo que quiero hacer es envolver mi punto de entrada principal dentro de untry bloque con uncatch eso crea un diálogo especial que informa al usuario de que se ha producido un error en la aplicación, con información más detallada presentada cuando el usuario hace clic en "Más" o "Información de depuración" o lo que sea. Esto contendría la cadena de información de diagnóstico. Luego podría dar instrucciones a los usuarios para que peguen esta información en informes de problemas.

Pero un sentimiento insoportable me dice que envolver todo en un bloque de prueba es una muy mala idea. ¿Es lo que estoy por hacer estúpido? Si lo es (e incluso si no lo es), ¿cuál es una mejor manera de lograr lo que quiero?

Respuestas a la pregunta(4)

Su respuesta a la pregunta