【发布时间】:2016-11-18 12:56:23
【问题描述】:
我在 xamarin 表单项目中使用 HttpClient
该类已记录在案,但我找不到任何有关其方法可能抛出哪些异常的文档。
例如,GetAsync 方法没有任何关于可能异常的文档。但我假设它会抛出,例如当服务器无法访问时。
这个类可能抛出的异常列表是否存在于某个地方?
【问题讨论】:
-
是的,在特定方法的文档中。你为什么想知道?
-
你得到一个
HttpResponseMessage,它具有IsSuccessStatusCode和StatusCode可以是以下属性之一:msdn.microsoft.com/en-us/library/… 这是你要找的吗? -
根据真正的异常,我只发现:"当 HTTP 响应包含错误代码时,HttpClient 不会引发异常。相反,如果状态为错误代码。如果您更愿意将 HTTP 错误代码视为异常,请在响应对象上调用 HttpResponseMessage.EnsureSuccessStatusCode。如果状态代码超出范围 200–299,此方法将引发异常。请注意,HttpClient 可以为以下情况引发异常其他原因——例如,如果请求超时。”
SocketException是我知道的另一个原因。 -
由于没有记录异常,您很可能会得到一个不完整的列表。任何调用该方法并得到异常的人都可能会告诉您他们得到的特定异常,但他们也不知道其他异常。这就是文档的真正用途,而微软在这方面做得很糟糕。
-
看起来该方法会将事物包装在
HttpRequestException中,并且 InnerException 属性将包含实际的底层异常。如果无法连接、服务器不存在等,您会得到HttpRequestException+WebException。
标签: c# httpclient