我意识到现在我的应用程序中的异常堆栈跟踪很短。
例如我有一个简单的应用程序:
private static void Main(string[] args)
{
var downloader = new DataDownloader("");
}
internal class DataDownloader
{
public DataDownloader(string template)
{
this._urlTemplate = template;
var manager = new FileManager();
manager.MoveFileSync();
}
}
public class FileManager
{
public FileManager()
{
}
public int MoveFileSync()
{
try
{
throw new ArgumentException();
}
catch (Exception ex)
{
}
return 0;
}
}
在 catch 中我得到了简单的 StackTrace
如何获取从
Main
入口点开始的完整堆栈跟踪?
TBH 不确定为什么会发生这种情况,但您可以手动构造
StackTrace
的实例并使用它:
try
{
throw new ArgumentException();
}
catch (Exception ex)
{
StackTrace st = new StackTrace(true);
Console.WriteLine(ex.StackTrace);
Console.WriteLine("....");
Console.WriteLine(st);
}
Exception.StackTrace
文档:
属性返回源自引发异常的位置的调用堆栈帧。您可以通过创建StackTrace
类的新实例并使用其System.Diagnostics.StackTrace
方法来获取有关调用堆栈中其他帧的信息。StackTrace.ToString