我正在使用 Azure SDK 将流上传到 Azure 存储 Blob。我想做异步,所以我使用CloudPageBlob.BeginUploadFromStream
. 这样做,我开始思考如果在读取流时抛出异常会发生什么。我找不到有关异常是否会冒泡的任何信息,因此我可以使用 try catch 捕获它,或者该方法是否会调用异步回调,或者会发生什么。
为了尝试一下,我将流包装在一个继承的类中Stream
,构造函数将我的流作为参数,并将其作为私有变量保存。然后,每个继承的方法只需在私有流上调用它的 equal。然而Read()
,我抛出一个异常,看看如果在读取流时出现问题会发生什么。然后我将我的流包装器的一个实例传递给BeginUploadFromStream()
,而不是实际的流。
事实证明,当抛出异常时,BeginUploadFromStream()
完成并调用异步回调,并且没有异常冒泡到第一次调用该方法的位置,所以我无法用 try catch 捕获它。同时,我找不到有关IAsyncResult
传递给回调的任何信息,即引发了异常。
我该怎么做才能对BeginUploadFromStream()
未按预期完成的事实采取行动?