3

我正在使用 Azure SDK 将流上传到 Azure 存储 Blob。我想做异步,所以我使用CloudPageBlob.BeginUploadFromStream. 这样做,我开始思考如果在读取流时抛出异常会发生什么。我找不到有关异常是否会冒泡的任何信息,因此我可以使用 try catch 捕获它,或者该方法是否会调用异步回调,或者会发生什么。

为了尝试一下,我将流包装在一个继承的类中Stream,构造函数将我的流作为参数,并将其作为私有变量保存。然后,每个继承的方法只需在私有流上调用它的 equal。然而Read(),我抛出一个异常,看看如果在读取流时出现问题会发生什么。然后我将我的流包装器的一个实例传递给BeginUploadFromStream(),而不是实际的流。

事实证明,当抛出异常时,BeginUploadFromStream()完成并调用异步回调,并且没有异常冒泡到第一次调用该方法的位置,所以我无法用 try catch 捕获它。同时,我找不到有关IAsyncResult传递给回调的任何信息,即引发了异常。

我该怎么做才能对BeginUploadFromStream()未按预期完成的事实采取行动?

4

1 回答 1

2

我相信你打电话时会看到异常EndUploadFromStream

于 2012-10-19T15:33:07.437 回答