哪些值可以记录CloctClientException.error.code具有



我希望我的数据访问层处理通过Microsoft.Azure.Documents.Client.DocumentClient类提供的DocumentDB API抛出的异常。例如,使用AccessCondition类实施的乐观并发检查,但其他。

通过查看抛出的例外,识别不同 DocumentClient特定异常的最佳方法似乎是这样的:

try { ... }
catch (DocumentClientException exception) 
    when (exception.Error.Code == "Some magic here")
{
    //let the user know how to recover from this..
}

我不喜欢这样的魔术字符串,因为它们不是可验证的编译时间。它可能会收集错字,或者可能会随机瞬间随机变化,而DocumentDB客户端/服务器更改等。此外,由于我看不到Microsoft.Azure.DocumentDB .NET API,我应该/应该处理哪种魔术代码任何ErrorCodes枚举或常数,也没有在文档中找到任何列表。

在哪里可以找到可能的 Error.Code值documentclient api可以投掷的列表?

使其更加令人困惑,DocumentClient.CreateDocumentAsync方法的XMLDOC建议在HTTP状态代码上工作。

更新:这个问题与HTTP状态代码无关,而是DocumentClientException.Error.Code字段,因为我认为后者更精确。

在哪里可以找到可能的错误代码列表documentclient api可以投掷的列表?

很难找到DocumentClinet API投掷的完全错误代码列表。例外取决于您的要求。

例如,乐观的并发检查

azure cosmos db使用 etags 来处理乐观的并发。

当我们从Azure Cosmos DB中检索文档时,它总是包含ETAG属性。

然后,当我们要发送请求替换文档时,我们可以使用ETAG 指定访问权限我们在获取文档时收到的。

如果我们发送的ETAG不是当前的,则服务器将返回 412先决条件失败状态代码。在我们的.NET SDK中,将其包裹在A documentClientException 中。

这是一个示例,显示出并发时可能的问题。

通过对版本1.22.0客户端进行反编译,该代码设置为httpstatuscode enum。我认为可以在此处找到所有可能的值

但是,真正包含更丰富的调试信息的是错误。可能需要对整个库进行编译以找出,或者等待Microsoft发布源代码,这不太可能发生,因为GitHub的最新更新是2或3年前。

public Error Error
{
    get
    {
        if (this.error == null)
        {
            this.error = new Error()
            {
                Code = this.StatusCode.ToString(),
                Message = this.Message
            };
        }
        return this.error;
    }
}

有Azure Cosmos DB

的HTTP状态代码列表

我在捕获块中使用以下代码

    catch (DocumentClientException e)
            {
                var resp = new HttpResponseMessage
                {
                    StatusCode = (HttpStatusCode) e.StatusCode,
                    Content = new StringContent(e.Message)
                };
                return resp;
            }

让用户知道应在客户端应用程序上处理如何处理异常。

相关内容

  • 没有找到相关文章

最新更新