【问题标题】:How to check if a call to Cosmos DB succeeded or failed如何检查对 Cosmos DB 的调用是成功还是失败
【发布时间】:2020-09-25 16:09:50
【问题描述】:

检查对 Cosmos DB 的调用是成功还是失败的最佳方法是什么?我应该检查响应中的状态代码还是捕获异常或两者兼而有之?有没有响应状态码不成功,但没有抛出异常的情况?

ContainerResponse containerResponse = null;
try
{
containerResponse = await cosmosClient.GetContainer(databaseId, containerId).ReadContainerAsync();
if (containerResponse.StatusCode != HttpStatusCode.Ok)
{
    // the call failed. do something here.
}
}
catch (CosmosException ex) when (ex.StatusCode != HttpStatusCode.NotFound)
{
throw;
}

...

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    在 V3 SDK 中,如果您使用 Stream API (ReadContainerStreamAsync),则不会因失败而引发异常,您应检查响应的状态码。

    如果您使用 Typed API (ReadContainerAsync),那么任何失败都会引发 CosmosException。

    参考:https://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Exceptions.md#typed-apis

    【讨论】:

    • 感谢您的信息和链接!
    • 请记得标记答案让他人受益
    • 我在控制台程序中使用 3.13,它就死了。没有要捕获的错误,输出窗口中没有任何内容。昨天还在上班,现在不行了。我知道这可能是我的问题,但我在类型化 API 上看到了相同的行为。
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多