Как отформатировать трассировку стека исключения в C #? - PullRequest
9 голосов
/ 03 марта 2010

Когда отображается исключение (или более общее - при преобразовании в строку), отображается трассировка стека. То, что я хочу сделать, это изменить формат путей к файлам исходного кода, показанных в такой трассировке.

В частности, я хотел бы оставить только имена файлов (без полного пути) или показать только ту часть пути, которая начинается с базовой директории проекта. Полные пути обычно не нужны и загромождают все сообщение.

Как я могу это сделать?

Ответы [ 2 ]

24 голосов
/ 03 марта 2010

Я задал похожий вопрос, хотя и не совсем так, здесь: Печать информации трассировки стека в C # .

Что вы можете сделать, это:

var trace = new System.Diagnostics.StackTrace(exception);

, который дает вам StackTrace объект, который дает вам всю необходимую информацию. В моем случае речь шла об избежании необходимости иметь дело с локализованным текстом исключения, но я думаю, что вы можете использовать тот же подход для своих нужд.


Редактировать : я отмечаю, что я добавил комментарий к принятому ответу на мой вопрос, связанный с параметром "needFileInfo" для конструктора. Я вижу этот конструктор здесь: StackTrace (исключение e, bool fNeedFileInfo) , я не могу сейчас найти реальный код, о котором идет речь, но я думаю, вам нужно передать true этому аргументу. Я думаю, что здесь эксперименты - это ключ.

Другими словами, я думаю, код должен быть таким:

var trace = new System.Diagnostics.StackTrace(exception, true);
2 голосов
/ 03 марта 2010

Проверьте класс System.Diagnostics.StackFrame и метод GetFileName . Вы можете написать метод, который будет получать трассировку стека и имена исходных файлов, которые вы можете вызывать в обработчике исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...