从DLL获取函数名称

时间:2010-04-05 09:07:46

标签: c# asp.net exception function

我想从asp.net中获取从dll抛出的异常的函数名称。

4 个答案:

答案 0 :(得分:0)

您应该可以使用堆栈跟踪

Exception.StackTrace Property

StackTrace Class

  

表示堆栈跟踪,它是一个   有序收集一个或多个   堆栈帧。

StackFrame Class

  

创建并推送StackFrame   每个函数调用的调用堆栈   在执行一个线程时做的。   堆栈帧始终包括   MethodBase信息,也可以选择   包括文件名,行号和   列号信息。

     

StackFrame信息最多   通过Debug构建提供信息   配置。默认情况下,Debug   构建包括调试符号,而   发布版本没有。调试   符号包含大部分文件,   方法名称,行号和列   用于建设的信息   StackFrame对象。

答案 1 :(得分:0)

您可以从例外创建StackTrace类并分析帧。

例如:

public void Throw()
{
    throw new MyException();
}

public void CallThrow()
{
    Throw();
}

[Test]
public void GetThrowingMethodName()
{
    try
    {
        CallThrow();
        Assert.Fail("Should have thrown");
    }
    catch (MyException e)
    {
        MethodBase deepestMethod = new StackTrace(e).GetFrame(0).GetMethod();
        string deepestMethodName = deepestMethod.Name;
        Assert.That(deepestMethodName, Is.EqualTo("Throw"));
    }
}

答案 2 :(得分:0)

你可以在system.diagnostic命名空间的帮助下尝试stacktrace对象这里是你可以尝试的linqpad测试源代码。

void Main()
{
    try {
        test();
    }
    catch(Exception ex) {
        StackTrace st = new StackTrace();
        st.GetFrame(1).GetMethod().Name.Dump();
    }
}

// Define other methods and classes here


public void test()
{
    throw new NotImplementedException();
}

答案 3 :(得分:0)

结帐StackTrace.GetFrame方法