我想要获取从asp.net中的dll引发的异常的函数名称。从DLL获取函数名称
回答
您应该能够利用堆栈跟踪
的表示一个堆栈跟踪,它是一个或多个 堆栈帧的 有序集合。
甲的StackFrame被创建并上推 调用堆栈一个线程的执行期间由每个函数调用 。 堆栈帧始终包含 MethodBase信息,并且可选地包含文件名称,行号和 列号信息。
StackFrame信息将最多 信息与调试版本 配置。默认情况下,调试 构建包含调试符号,而 版本构建不包含。调试 符号包含大部分文件, 方法名称,行号和列 用于构造 StackFrame对象的信息。
您可以从例外中创建一个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"));
}
}
仍然我不能得到该方法的名称,告诉我如何从DLL中抛出异常的方法的名称。 – Hari 2010-04-05 10:07:03
@ram,你得到的结果是什么?你可以发表一个你是代码的例子,并调用引发异常的外部程序集吗? – Elisha 2010-04-05 10:19:14
这里我的例子的代码: 空隙测试() { /*异常这里谈到*/ } 公共类方法{ 空隙负载() { 测试(); } } 这里class name'method'是一个dll文件,即时通讯从方法'test()'得到异常。但是堆栈跟踪以“load()”的形式返回方法的名称。我需要获取方法名称'test()'。 – Hari 2010-04-05 10:41:05
你可以尝试用system.diagnostic命名空间的帮助这里的堆栈跟踪的对象是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();
}
- 1. 如何从.dll(系统)获取导出的函数名称?
- 2. 如何从VC++ .dll文件获取函数名称(函数声明)?
- 3. 获取类名称函数的名称
- 4. 从自己获取函数名称
- 5. 获取函数名称
- 6. LuaBind获取函数名称
- 7. Unmangling C++ DLL函数名称
- 8. 宏从函数内部获取函数名称和参数值
- 9. 从函数地址获取函数名称
- 10. in flex,从函数对象获取函数名称
- 11. R获取函数参数的名称
- 12. 如何从CloudFormation AWS :: Lambda :: Alias获取函数名称和别名?
- 13. DLL中获取函数PTR
- 14. 函数名与序数值 - 从DLL模块获取函数地址
- 15. 从函数名获取内置函数
- 16. 从函数指针获取函数名?
- 17. 获取装饰函数的名称?
- 18. django:getattr函数(获取字段名称)
- 19. 获取函数的名称空间
- 20. JavaScript - 获取调用函数的名称
- 21. 按名称获取函数描述符:
- 22. 动态获取函数名称
- 23. 获取当前VBA函数的名称
- 24. jQuery +获取函数的名称
- 25. 获取注入CFC的函数名称?
- 26. 在javascript中获取函数名称
- 27. 在Swift中获取函数名称
- 28. 如何获取函数的名称?
- 29. DLL中函数的名称是什么?
- 30. 从* .icl,* .dll中提取图标名称
你的意思是你想获取抛出异常的方法的名称? – Elisha 2010-04-05 09:10:11
是的,我需要在DLL中的方法的名称,抛出异常 – Hari 2010-04-05 09:15:13