如何在Exception中获取LineNumber和Method名称

时间:2013-04-26 10:24:10

标签: asp.net exception

所以我有一个函数,它又调用一个以Exception对象作为参数的方法。

public DataSet SomeFunction()
{    
    try
    {

    }
    catch (Exception ex)
    {
            ErrorLogInDB.LogError(ex);
            throw;
    }
}

public static void LogError(Exception exception)
{
    StackTrace st = new StackTrace(exception, true);
    StackFrame frame = new StackFrame(0);

    MethodBase site = exception.TargetSite;

    string fileName = frame.GetFileName();
    string methodName = site.Name;
    int lineNo = frame.GetFileLineNumber();
    string errorDescription = exception.Message;
}   

从上面的函数LogError我得到filename nullmethodname不正确,line number。怎么解决?

1 个答案:

答案 0 :(得分:4)

...试

StackTrace trace = new StackTrace(exception, true);
StackFrame stackFrame = trace.GetFrame(trace.FrameCount - 1);
string fileName = stackFrame.GetFileName();
string methodName = stackFrame.GetMethod().Name();
int lineNo = stackFrame.GetFileLineNumber();