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

时间:2014-10-05 10:00:22

标签: c# windows-runtime windows-phone windows-phone-8.1 stack-trace

我从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()

1 个答案:

答案 0 :(得分:0)

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

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

此外,未使用的 code contracts 和按合同模式设计可以防止出现许多意外问题,或在发生时轻松识别它们。

可悲的是,如果您没有准备好代码来处理这些情况 - 比如您的用户问题 - 那么您将遇到麻烦,并且您需要询问用户他/她在做什么时抛出异常,并尝试逐步重现该问题。