Извлечь класс и имя файла из исключения - PullRequest
9 голосов
/ 24 марта 2011

Можно ли извлечь имя класса и имя файла из объекта исключения?

Я хочу улучшить регистрацию в моем приложении и хочу включить подробную информацию о том, где произошло исключение.

В MVC Stacktrace не возвращает имя файла и имя класса, и я немного растерялся, где их искать.

Спасибо

1 Ответ

22 голосов
/ 24 марта 2011

Вы можете создать StackTrace объект из объекта исключения. Он будет включать StackFrame s, о которых есть информация об исключении. Затем вы можете найти имена файлов и методов, позиции и еще много чего, если они доступны. Конечно, это само собой разумеется, но все это доступно , только если вы скомпилировали свою сборку для включения символов отладки (которые, как я предполагаю, могут быть доступны в MVC).

catch (Exception ex)
{
    var st = new StackTrace(ex, true); // create the stack trace
    var query = st.GetFrames()         // get the frames
                  .Select(frame => new
                   {                   // get the info
                       FileName = frame.GetFileName(),
                       LineNumber = frame.GetFileLineNumber(),
                       ColumnNumber = frame.GetFileColumnNumber(),
                       Method = frame.GetMethod(),
                       Class = frame.GetMethod().DeclaringType,
                   });
    // log the information obtained from the query
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...