我正在使用Azure SDK将流上传到Azure存储块。 我希望使用异步方式进行,因此我使用
CloudPageBlob.BeginUploadFromStream
。这样做后,我开始考虑在读取流时如果引发异常会发生什么。我找不到任何关于异常是否会上升的信息,因此我可以使用try catch捕获它,或者方法是否调用异步回调,或者会发生什么。
为了尝试它,我将我的流包装在一个继承Stream
的类中,构造函数以我的流作为参数,并将其保留为私有变量。 然后,每个继承的方法只是在私有流上调用相应的方法。 但是,在Read()
中,我抛出一个异常,以查看在读取流时出现问题会发生什么。 然后,我将我的流包装器的实例传递给BeginUploadFromStream()
,而不是实际的流。
BeginUploadFromStream()
会完成并调用异步回调,但没有异常冒泡到最初调用该方法的位置,因此我无法使用try catch捕获它。同时,我找不到传递给回调函数的IAsyncResult
上的任何关于抛出异常的信息。
我应该怎么做才能知道BeginUploadFromStream()
没有如预期一样完成?
EndUploadFromStream()
放在try catch中正是我所需要的。非常感谢! - Christofer Eliasson