2012-10-19 55 views
3

我正在使用Azure SDK將流上傳到Azure存儲Blob。我想做異步,所以我使用CloudPageBlob.BeginUploadFromStream。這樣做,我開始考慮如果在讀取流時拋出異常會發生什麼。我找不到有關異常是否會冒泡的任何信息,所以我可以用try catch來捕獲它,或者如果該方法調用異步回調,或者會發生什麼情況。如何處理從CloudPageBlob.BeginUploadFromStream中拋出的異常

爲了試用它,我將流封裝在繼承Stream的類中,構造函數將我的流作爲參數,並將其保留爲私有變量。每個繼承的方法只是在私有流上調用它的平等。然而,在Read()中,我拋出一個異常,看看如果在讀取流時出錯,會發生什麼。然後,我將我的streamwrapper實例傳遞給BeginUploadFromStream(),而不是實際的流。

事實證明,當引發異常時,BeginUploadFromStream()完成並調用異步回調,並且沒有異常冒泡到方法第一次調用的地方,所以我無法用try catch捕獲它。同時,我找不到傳遞給回調的IAsyncResult上的任何信息,即拋出異常。

如何才能對BeginUploadFromStream()未按預期完成的事實採取行動?

回答

2

我相信你會在撥打EndUploadFromStream時看到異常。

+1

當然,在try catch中包裝'EndUploadFromStream()'正是我所需要的。非常感謝! –

相關問題