HttpResponseMessage.EnsureSuccessStatusCode()的使用模式是什么?它处理消息的内容并抛出HttpRequestException,但是我看不出如何以编程方式处理它,这与泛型Exception有什么不同.例如,它不包括HttpStatusCode,这将是方便的.

有没有办法从中获取更多信息?有人能展示EnsureSuccessStatusCode()和HttpRequestException的相关使用模式吗?

推荐答案

EnsureSuccessStatusCode的惯用用法是,当您不想以任何特定方式处理失败 case 时,简洁地验证请求是否成功.当您想要快速地建立客户机原型时,这尤其有用.

当您决定要以特定方式处理失败 case 时,do not执行以下操作.

var response = await client.GetAsync(...);
try
{
    response.EnsureSuccessStatusCode();
    // Handle success
}
catch (HttpRequestException)
{
    // Handle failure
}

这会抛出一个异常以立即捕获它,这没有任何意义.HttpResponseMessageIsSuccessStatusCode房产就是为了这个目的而存在的.改为执行以下操作.

var response = await client.GetAsync(...);
if (response.IsSuccessStatusCode)
{
    // Handle success
}
else
{
    // Handle failure
}

.net相关问答推荐

如何在 C# 中将 HTTP 发布请求发送到另一个 API?

如何从标头中检索基本身份验证凭据?

如何使用 C# 中的代码更改网络设置(IP 地址、DNS、WINS、主机名)

每 X 秒执行一次指定函数

mstest.exe 在哪里?

泛型方法是如何、何时、何地具体化的?

通用枚举到int的C#非装箱转换?

在 WPF 窗口中获取当前聚焦的元素/控件

如何使用 log4net 记录跟踪消息?

控制台应用程序的退出时

使用 .NET 中的代码更改桌面墙纸

HashSet 是否保留插入顺序?

DBNull 的意义何在?

隐式与显式接口实现

如何退出所有正在运行的线程?

如何从 .NET 中的流中获取 MemoryStream?

为什么使用 ImmutableList 而不是 ReadOnlyCollection?

在 .NET 中填充整数列表

.NET 高级别的 .NET 4.0 和 .NET 4.5 的区别

安装带有恢复操作的 Windows 服务以重新启动