我知道如果blob存在,CloudBlockBlob.DeleteIfExists()将返回true,否则返回false。
但是我很好奇知道如果blob确实存在会发生什么,但Azure中出现问题导致文件删除不会发生(我无法找到有关该行为的任何文档)。 / p>
我担心的是它会返回false而不是抛出某种异常,所以我相信blob会被删除,当它实际上仍然存在时。
简而言之,如果我得到一个false值,那么 总是 意味着blob不存在,不需要删除,而且我和#39;如果在Azure结束时出现问题,会遇到某种异常吗?
感谢。
答案 0 :(得分:4)
查看此方法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;
}
}
}
答案 1 :(得分:0)