首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以生成排除内部方法的.NET堆栈跟踪吗?

可以生成排除内部方法的.NET堆栈跟踪吗?
EN

Stack Overflow用户
提问于 2017-09-15 13:37:46
回答 1查看 201关注 0票数 1

有时,当.NET类方法发生异常时,该方法本身在内部调用一组其他方法,但错误发生在其中一种方法中。这就造成了一个臃肿和混乱的堆栈跟踪,比需要的“无意义”的东西更多。是否有一种方法可以获得一个堆栈跟踪,该跟踪停止于导致错误的公共.NET方法,而不是让它显示.NET方法的所有内部?

这方面的一个例子是ADO.NET的ExecuteNonQuery()。在内部,调用类似于5-6个函数,在第6个嵌套函数之前,异常可能不会发生,因此堆栈跟踪显示了所有我们无法处理或关心的内部元素。如果它停止在ExecuteNonQuery()处,那么它会更干净,因为这是面向.NET方法的公共方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 13:46:18

简单地说,“不行”,您不能改变.NET生成堆栈跟踪的方式。当生成堆栈跟踪时,它会显示每个调用站点。但是,如果您希望有一些自定义行为,则可以编写一些自定义代码来编辑您生成的堆栈跟踪的输出。

要生成堆栈跟踪,可以使用如下代码:

代码语言:javascript
复制
StackTrace stackTrace = new StackTrace();           
StackFrame[] stackFrames = stackTrace.GetFrames();  

构造函数将生成堆栈跟踪数据,.GetFrames()将将方法返回给您。从那时起,您可以根据自己的意愿对它们进行过滤(使用stackFrame.GetMethod()获取每个帧的方法信息--或者过滤它,或者将它添加到字符串输出的StringBuilder中,等等)

参考资料:https://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace(v=vs.110).aspx

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46240952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档