当异常发生时,您可以打印出StackTrace并进行审核。
如果您想在没有异常发生的情况下获取StackTrace,该怎么办?
有没有一种方法可以做到这一点?
当异常发生时,您可以打印出StackTrace并进行审核。
如果您想在没有异常发生的情况下获取StackTrace,该怎么办?
有没有一种方法可以做到这一点?
当你捕获一个异常时,你可以构造StackTrace对象并从中提取有用的信息。请参考以下示例:
StackTrace st = new StackTrace(true);
for(int i =0; i< st.FrameCount; i++ )
{
// Note that high up the call stack, there is only
// one stack frame.
StackFrame sf = st.GetFrame(i);
Console.WriteLine();
Console.WriteLine("High up the call stack, Method: {0}",
sf.GetMethod());
Console.WriteLine("High up the call stack, Line Number: {0}",
sf.GetFileLineNumber());
}
PS:即使没有异常,这也可以工作--请参见.NET中如何打印当前堆栈跟踪而不引发任何异常。
System.Environment.StackTrace是一个很棒的工具,但请注意您并不总是能得到您想要的结果,并且x86和x64平台之间存在差异,这可能会影响输出。在此处了解详细信息。