如何从c#中的堆栈跟踪中识别异常的实际位置或行



我从Windows Phone 8.1应用程序的用户那里得到了以下堆栈跟踪,如何识别错误的实际位置或行?

Error Code: -2147024894
Error Message:The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at EM.Backend.LibraryScanner.<ScanLibrary>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at EM.App.<VerifyFirstLaunch>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__3(Object state)
at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()

也许一个好的日志记录策略应该足以为意外异常添加更多上下文。

您应该能够自己分析代码,并找到关键的代码部分,在某些情况下,您可能会觉得代码可能会失败。

此外,不常用的代码契约和按契约设计模式可以防止许多意外问题,或者在它们发生时很容易识别它们。

遗憾的是,如果你没有准备好你的代码来处理这些情况,比如你与用户的问题,你就会遇到麻烦,你需要询问用户在抛出异常时他/她在做什么,并尝试一步一步地重现问题。

最新更新