gpt4 book ai didi

Azure CloudBlockBlob.DeleteIfExists() - false 是否始终意味着 blob 不存在?

转载 作者:行者123 更新时间:2023-12-04 01:39:13 25 4
gpt4 key购买 nike

我知道如果 blob 存在,CloudBlockBlob.DeleteIfExists() 将返回 true,如果不存在,则返回 false。

但是,我很好奇,如果 blob 确实存在,但 Azure 中出现问题,导致文件删除无法发生(我找不到有关该行为的任何文档),会发生什么。

我担心它会返回 false 而不是抛出某种异常,因此我相信 blob 已被删除,而实际上它仍然存在。

简而言之,如果我得到 false 值,是否始终意味着该 blob 不存在,无需删除,我会如果 Azure 端出现问题,会出现某种异常吗?

谢谢。

最佳答案

查看该方法的源代码here ,如果 blob 被删除,您将得到 true;如果 blob(或 blob 容器)不存在,您将得到 false。在所有其他情况下(假设 blob 已被租用,因此无法删除),将会引发异常。相关代码如下:

    public virtual bool DeleteIfExists(DeleteSnapshotsOption deleteSnapshotsOption = DeleteSnapshotsOption.None, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null)
{
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.Unspecified, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();

try
{
this.Delete(deleteSnapshotsOption, accessCondition, modifiedOptions, operationContext);
return true;
}
catch (StorageException e)
{
if (e.RequestInformation.HttpStatusCode == (int)HttpStatusCode.NotFound)
{
if ((e.RequestInformation.ExtendedErrorInformation == null) ||
(e.RequestInformation.ExtendedErrorInformation.ErrorCode == BlobErrorCodeStrings.BlobNotFound) ||
(e.RequestInformation.ExtendedErrorInformation.ErrorCode == BlobErrorCodeStrings.ContainerNotFound))
{
return false;
}
else
{
throw;
}
}
else
{
throw;
}
}
}

关于Azure CloudBlockBlob.DeleteIfExists() - false 是否始终意味着 blob 不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48105181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com