Wyświetlanie informacji o debugowaniu wyjątków dla użytkowników

Obecnie pracuję nad dodaniem wyjątków i obsługi wyjątków do mojej aplikacji OSS. Wyjątki od samego początku były ogólną ideą, ale chciałem znaleźć dobrą ramę wyjątków i szczerze mówiąc, lepiej zrozumieć konwencje i idiomy obsługi wyjątków C ++ przed rozpoczęciem ich używania. Mam duże doświadczenie z C # /. Net, Python i innymi językami, które używają wyjątków. Pomysł nie jest mi obcy (ale daleko od mistrza).

W C # i Pythonie, gdy wystąpi nieobsługiwany wyjątek, użytkownik otrzymuje ładny ślad stosu i generalnie dużobardzo przydatne bezcenne informacje o debugowaniu. Jeśli pracujesz nad aplikacją OSS, umieszczanie tych informacji w raportach o problemach jest ... cóż, powiedzmy, że trudno mi bez tego żyć. W przypadku tego projektu C ++ dostaję „Awaria aplikacji” lub od bardziej poinformowanych użytkowników: „Zrobiłem X, Y i Z, a potem się zawiesił”. Ale chcę też tę informację debugowania!

Zrobiłem już (i z wielkim trudem) spokój z faktem, że nigdy nie zobaczę międzyplatformowego i kompilatorowego sposobu uzyskiwania śledzenia stosu wyjątków C ++, ale wiem, że mogę uzyskać nazwę funkcji i inne istotna informacja.

A teraz chcę tego dla moich nieobsłużonych wyjątków. używamboost :: wyjąteki mają to bardzo miłeinformacje diagnostyczne rzecz, która może wydrukować (niezmienioną) nazwę funkcji, plik, linię i co najważniejsze, inne informacje specyficzne dla wyjątku, które programista dodał do tego wyjątku.

Naturalnie będę obsługiwał wyjątki wewnątrz kodu, kiedy tylko będę mógł, ale nie jestem aż tak naiwny sądzić, że nie pozwolę, by para się prześlizgnęła (oczywiście nieumyślnie).

Tak więc chcę zawinąć mój główny punkt wejścia do środkatry blok zcatch tworzy specjalne okno dialogowe informujące użytkownika, że ​​wystąpił błąd w aplikacji, z bardziej szczegółowymi informacjami przedstawionymi, gdy użytkownik kliknie „Więcej” lub „Informacje debugowania” lub cokolwiek innego. To zawierałoby łańcuch z informacji diagnostycznej. Mogłem wtedy poinstruować użytkowników, aby wkleili te informacje do raportów o problemach.

Ale dręczące przeczucie mówi mi, że pakowanie wszystkiego w blok próbny to naprawdę zły pomysł. Czy to, co zaraz zrobię, będzie głupie? Jeśli tak jest (a nawet jeśli nie jest), jaki jest lepszy sposób na osiągnięcie tego, czego chcę?

questionAnswers(4)

yourAnswerToTheQuestion