我想知道是否可以将异常中的字符串StackTrace转换为更结构化的数据对象?
或者是否有一种方法可以在我捕获异常时获取此信息? 也许使用反射的东西?
谢谢!
答案 0 :(得分:3)
查看System.Diagnostics.StackTrace课程。您可以创建对象并遍历框架。
StackTrace st = new StackTrace();
foreach (var frame in st.GetFrames())
{
Console.WriteLine(frame.GetFileName().ToString()
+ ":"
+ frame.GetFileLineNumber().ToString());
}
答案 1 :(得分:2)
使用StackTrace
类和构造函数接受Exception
:
static void ShowExceptionStackTrace(Exception ex)
{
var stackTrace = new StackTrace(ex, true);
foreach (var frame in stackTrace.GetFrames())
Console.WriteLine(frame.GetMethod().Name);
}
答案 2 :(得分:1)
基本上,如果你想要一致的解决方案,那你就不走运了。
您可以通过存储stack trace on exception construction来获得一个hodge podge解决方案。
但是,在抛出异常时,框架中没有挂钩。