我希望这个问题可以在SO的规则中存活下来,因为我搜索了很多,没有找到它的文档,有时会忽略它,但这促使我不理解问题和解决方案。 Exceptoion的StackeTrace
有自己的描述问题的方式,是的,用一种人性化的语言,但是我不知道或者它来自哪里的符号和代码,这是我忽略的其中一个因为我不喜欢不明白它的意思,但我无法解决问题:
在System.Net.Http.HttpClientHandler + d__63.MoveNext()[0x004ab] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0 ---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()[0x0000c]在<657aa8fea4454dc898a9e5f379c58734>:0在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task任务)[0x0003e]在<657aa8fea4454dc898a9e5f379c58734>:0在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task任务)[0x00028]在<657aa8fea4454dc898a9e5f379c58734>:0中的System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task任务)[0x00008]在<657aa8fea4454dc898a9e5f379c58734>:0在系统.Runtime.CompilerServices.ConfiguredTaskAwaitable`1 + ConfiguredTaskAwaiter [TResult] .GetResult()[0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Net.Http.HttpClient + d__49.MoveNext()[0x000ca] in <35658e59c86d40bdb b2ef0bb34b4f0c7>:0 ---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter的<657aa8fea4454dc898a9e5f379c58734>中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c]中.ThrowForNonSuccess(System.Threading.Tasks.Task任务)[0x0003e]在<657aa8fea4454dc898a9e5f379c58734>:0中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task任务)[0x00028]在<657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task task)[0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter`1 [TResult] .GetResult()[0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0处的PSProject.Helpers.Utility + d__15.MoveNext()[0x00136]在D:\ PSProject \ PSProject \ PSProject \ PSProject \ Helpers \ Utility.cs:212
当我尝试通过来自Wi-Fi网络的HttpClient.PostAsync
通过网络服务获取数据而不是移动数据(这是一个Xamarin应用程序)时,会抛出异常。从这条痕迹我能理解什么?例如:
HttpClientHandler
及其所在位置:在<35658e59c86d40bdbb2ef0bb34b4f0c7>
从抛出异常的先前位置开始的堆栈跟踪结束
这是HttpClient
类的内部代码吗?
如何了解StackTrace的大部分内容以了解异常?
堆栈跟踪器很复杂,因为您使用的是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。