我想从asp.net中获取从dll抛出的异常的函数名称。
答案 0 :(得分:0)
您应该可以使用堆栈跟踪
表示堆栈跟踪,它是一个 有序收集一个或多个 堆栈帧。
创建并推送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)