Azure SDK を使用してストリームを Azure Storage Blob にアップロードしています。非同期でやりたいので、CloudPageBlob.BeginUploadFromStream
. これを行うことで、ストリームの読み取り中に例外がスローされた場合にどうなるかを考え始めました。例外がバブルアップするかどうか、メソッドが非同期コールバックを呼び出すかどうか、または何が起こるかについての情報を見つけることができなかったので、try catch でキャッチできました。
試してみるために、ストリームを を継承するクラスにラップしましStream
た。コンストラクターはストリームを引数として取り、それをプライベート変数として保持します。継承された各メソッドは、プライベート ストリームで同等のメソッドを呼び出すだけです。ただし、Read()
例外をスローして、ストリームの読み取り中に何か問題が発生した場合に何が起こるかを確認します。BeginUploadFromStream()
次に、実際のストリームではなく、ストリームラッパーのインスタンスを に渡します。
例外がスローされ、BeginUploadFromStream()
非同期コールバックが完了して呼び出されると、メソッドが最初に呼び出された場所まで例外が発生しないことが判明したため、try catch でキャッチできません。同時に、IAsyncResult
コールバックに渡された、例外がスローされたという情報が見つかりません。
BeginUploadFromStream()
期待どおりに完了しなかったという事実に対処できるようにするには、どうすればよいですか?