在我的 UWP 应用程序的
App.xaml.cs
文件中,我有以下代码来获取未处理的异常的 StackTrace
属性值并将其打印到调试输出:
private void OnAppUnhandledException(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)
{
Exception exceptionThatDoesntGoAway = e.Exception;
string stackTrace = exceptionThatDoesntGoAway.StackTrace;
Debug.WriteLine("Exception Stacktrace: " + stackTrace);
e.Handled = true;
}
我将异常保存到一个单独的变量中,因为存在另一个奇怪的行为,如果多次访问异常的内容将被删除以防我再次需要它。
然后,我将异常的
StackTrace
属性值保存到一个变量中,然后将它打印到调试输出中。
问题是在访问
StackTrace
属性之前和之后我得到两个不同的输出:
我在 Visual Studio 中观察了
exceptionThatDoesntGoAway
变量和 StackTrace
属性:
这是
StackTrace
变量(第一个观察项)的 exceptionThatDoesntGoAway
属性值:
虽然这是
exceptionThatDoesntGoAway.StackTrace
属性值,但我的应用文件(第二个观看项目)没有行号:
为什么即使它们是相同的
StackTrace
属性,值也会不同?
如何获得具有正确行号的第一个堆栈跟踪?是预期的行为吗?