如何读取 StackTrace?
How to read the StackTrace?
我希望这个问题能够在 SO 的规则下存活下来,因为我搜索了很多,没有找到关于它的文档,有时甚至忽略了它,但这让我既不理解问题也不理解解决方案。 Exceptoion 的 StackeTrace
有它自己的描述问题的方式,是的,用一种人性化的语言,但带有我不知道的符号和代码,也不知道它们来自哪里,这是我知道的其中之一忽略,因为我不明白它说的是什么,但我无法解决问题:
at System.Net.Http.HttpClientHandler+d__63.MoveNext ()
[0x004ab] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0
--- End of stack trace from previous location where exception was thrown --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
[0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
(System.Threading.Tasks.Task task) [0x0003e] in
<657aa8fea4454dc898a9e5f379c58734>:0 at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Threading.Tasks.Task task) [0x00028] in
<657aa8fea4454dc898a9e5f379c58734>:0 at
System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
(System.Threading.Tasks.Task task) [0x00008] in
<657aa8fea4454dc898a9e5f379c58734>:0 at
System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult
() [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0 at
System.Net.Http.HttpClient+d__49.MoveNext ()
[0x000ca] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0
--- End of stack trace from previous location where exception was thrown --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
[0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
(System.Threading.Tasks.Task task) [0x0003e] in
<657aa8fea4454dc898a9e5f379c58734>:0 at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Threading.Tasks.Task task) [0x00028] in
<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 at
PSProject.Helpers.Utility+d__15.MoveNext () [0x00136] in
D:\PSProject\PSProject\PSProject\PSProject\Helpers\Utility.cs:212
当我尝试通过 HttpClient.PostAsync
从 Wi-Fi 网络而不是移动数据(这是一个 Xamarin 应用程序)通过 Web 服务获取数据时抛出异常。
我能从那条痕迹中了解到什么?
例如:
- 什么是
HttpClientHandler
及其位置:
in <35658e59c86d40bdbb2ef0bb34b4f0c7>
- 这被提到了两次:
End of stack trace from previous location where exception was thrown
这是 HttpClient
class 的内部代码吗?
如何了解StackTrace最了解的异常情况?
堆栈跟踪器很复杂,因为您使用的是 async/await
。您不需要上述跟踪中的大部分信息。大多数情况下,您可以忽略错误代码和与 awaiter
.
相关的任何内容
找到第一个没有提到awaiter
的位置,大多数情况下你会在那里找到一个行号。这主要是抛出您正在调查的 Exception
的位置。
在你的例子中是这一行:
PSProject.Helpers.Utility+d__15.MoveNext () [0x00136] in D:\PSProject\PSProject\PSProject\PSProject\Helpers\Utility.cs:212
是第一个没有提到awaiter
的位置。 Utility.cs 文件中抛出 Exception
的行号是 212.
我希望这个问题能够在 SO 的规则下存活下来,因为我搜索了很多,没有找到关于它的文档,有时甚至忽略了它,但这让我既不理解问题也不理解解决方案。 Exceptoion 的 StackeTrace
有它自己的描述问题的方式,是的,用一种人性化的语言,但带有我不知道的符号和代码,也不知道它们来自哪里,这是我知道的其中之一忽略,因为我不明白它说的是什么,但我无法解决问题:
at System.Net.Http.HttpClientHandler+d__63.MoveNext () [0x004ab] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Net.Http.HttpClient+d__49.MoveNext () [0x000ca] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <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 at PSProject.Helpers.Utility+d__15.MoveNext () [0x00136] in D:\PSProject\PSProject\PSProject\PSProject\Helpers\Utility.cs:212
当我尝试通过 HttpClient.PostAsync
从 Wi-Fi 网络而不是移动数据(这是一个 Xamarin 应用程序)通过 Web 服务获取数据时抛出异常。
我能从那条痕迹中了解到什么?
例如:
- 什么是
HttpClientHandler
及其位置:
in <35658e59c86d40bdbb2ef0bb34b4f0c7>
- 这被提到了两次:
End of stack trace from previous location where exception was thrown
这是 HttpClient
class 的内部代码吗?
如何了解StackTrace最了解的异常情况?
堆栈跟踪器很复杂,因为您使用的是 async/await
。您不需要上述跟踪中的大部分信息。大多数情况下,您可以忽略错误代码和与 awaiter
.
找到第一个没有提到awaiter
的位置,大多数情况下你会在那里找到一个行号。这主要是抛出您正在调查的 Exception
的位置。
在你的例子中是这一行:
PSProject.Helpers.Utility+d__15.MoveNext () [0x00136] in D:\PSProject\PSProject\PSProject\PSProject\Helpers\Utility.cs:212
是第一个没有提到awaiter
的位置。 Utility.cs 文件中抛出 Exception
的行号是 212.