我希望这个问题可以在SO的规则中存活,因为我经常搜索,没有找到它的文档,有时会忽略它,但这促使我不理解问题和解决方案。 Exceptoion的StackeTrace
有自己的描述问题的方式,是的,用人性化的语言,但是我不知道的符号和代码,或者它来自何处,这是我的其中之一被忽略,因为我不明白它说的是什么,但我无法解决问题:
在System.Net.Http.HttpClientHandler + d__63.MoveNext() < 35658e59c86d40bdbb2ef0bb34b4f0c7>中的[0x004ab]:0 ---从抛出异常的先前位置开始的堆栈跟踪结束--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() < 657aa8fea4454dc898a9e5f379c58734>中的[0x0000c]:0 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task任务)[0x0003e] in < 657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task任务)[0x00028] in < 657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task任务)[0x00008] in < 657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1 + ConfiguredTaskAwaiter [TResult] .GetResult ()[0x00000]在< 657aa8fea4454dc898a9e5f379c58734>:0 at System.Net.Http.HttpClient + d__49.MoveNext() < 35658e59c86d40bdbb2ef0bb34b4f0c7>中的[0x000ca]:0 ---从抛出异常的先前位置开始的堆栈跟踪结束--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() < 657aa8fea4454dc898a9e5f379c58734>中的[0x0000c]:0 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task任务)[0x0003e] in < 657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task任务)[0x00028] in < 657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task任务)[0x00008] in < 657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter`1 [TResult] .GetResult() [0x00000]在< 657aa8fea4454dc898a9e5f379c58734>中:0 at PSProject.Helpers.Utility + d__15.MoveNext()[0x00136] in d:\ PSProject \ PSProject \ PSProject \ PSProject \助手\ Utility.cs:212
当我尝试通过HttpClient.PostAsync
从Wi-Fi网络通过网络服务获取数据而非移动数据(这是一个Xamarin应用)时,会抛出异常。
从这条痕迹我能理解什么?
例如:
HttpClientHandler
它所在的位置:in< 35658e59c86d40bdbb2ef0bb34b4f0c7>
从抛出异常的上一个位置开始的堆栈跟踪结束
这是HttpClient
类的内部代码吗?
如何最大限度地了解StackTrace以了解异常?
答案 0 :(得分:2)
堆栈跟踪器很复杂,因为您使用的是async/await
。您不需要上述跟踪中的大部分信息。大多数情况下,您可以忽略错误代码以及与awaiter
相关的任何内容。
找到未提及awaiter
的第一个位置,大多数情况下,您将在那里找到一个行号。它主要是抛出你正在调查的Exception
的位置。
在你的例子中就是这一行:
PSProject.Helpers.Utility + d__15.MoveNext()[0x00136]在D:\ PSProject \ PSProject \ PSProject \ PSProject \ Helpers \ Utility.cs:212
这是第一个未提及awaiter
的位置。 Utility.cs 文件中引发Exception
的行号是 212 。