从Exception中提取类和文件名

时间:2011-03-24 10:42:24

标签: c# exception

是否可以从异常对象中提取类名和文件名?

我希望将更好的日志记录集成到我的应用程序中,并希望包含异常发生位置的详细信息。

在MVC中,Stacktrace不返回文件名&类名,我有点迷失在哪里寻找这些。

由于

1 个答案:

答案 0 :(得分:22)

您可以从异常对象创建StackTrace对象。它将包含异常信息的StackFrame个。然后,您可以找到文件和方法名称,位置等等(如果可用)。当然,这应该是不言而喻的,但只有你编译你的程序集以包含调试符号(我认为可以在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
}