Отображение исключительной отладочной информации пользователям

В настоящее время я работаю над добавлением исключений и обработкой исключений в мое приложение OSS. Исключения были основной идеей с самого начала, но я хотел найти хорошую структуру исключений и, честно говоря, лучше понять соглашения по обработке исключений C ++ и идиомы, прежде чем начать их использовать. У меня большой опыт работы с C # /. Net, Python и другими языками, которые используют исключения. Я'Я не чужд этой идее (но далеко от мастера).

В C # и Python, когда возникает необработанное исключение, пользователь получает хорошую трассировку стека и в целом многоочень полезно бесценная отладочная информация. Если ты'работа над приложением OSS, когда пользователи вставляют эту информацию в отчеты о проблемах ...просто скажи яМне трудно жить без этого. Для этого проекта C ++ я получаюПриложение упало "или от более информированных пользователей "Я сделал X, Y и Z, а потом он разбился ", Но я тоже хочу эту отладочную информацию!

Мы уже (и с большим трудом) примирились с тем, что яЯ никогда не увижу кросс-платформенный и кросс-компиляторский способ получения трассировки стека исключений C ++, но я знаю, что могу получить имя функции и другую соответствующую информацию.

И теперь я хочу это для моих необработанных исключений. Я'м используюповышение :: исключениеи у них это очень милоdiagnostic_information штука, которая может распечатать (не исправленные) имя функции, файл, строку и, самое главное, другую информацию, специфичную для исключения, которую программист добавил к этому исключению.

Естественно, яЯ буду обрабатывать исключения внутри кода всякий раз, когда смогу, но яя не настолько наивен, чтобы думать, что я выигралне позволяйте паре проскользнуть (непреднамеренно, конечно).

Так что я хочу сделать, это обернуть мою основную точку входа вtry блок сcatch это создает специальный диалог, который информирует пользователя о том, что произошла ошибка в приложении, с более подробной информацией, представленной, когда пользователь нажимает кнопку "Больше" или же "Отладочная информация " или что угодно. Это будет содержать строку из диагностики_информации. Затем я мог бы поручить пользователям вставлять эту информацию в отчеты о проблемах.

Но ворчливое чувство говорит мне, что завернуть все в блок try - это действительно плохая идея. Это то, что ям делать глупо? Если это так (и даже если этонет) чтолучший способ добиться того, чего я хочу?

Ответы на вопрос(4)

Ваш ответ на вопрос