2012-10-19 3 views
3

저는 Azure SDK를 사용하여 Azure 저장소 Blob에 스트림을 업로드하고 있습니다. 비동기로 처리하기를 원하므로 CloudPageBlob.BeginUploadFromStream을 사용합니다. 이렇게하면 스트림을 읽는 동안 예외가 발생하면 어떻게되는지 생각하기 시작했습니다. 예외가 부풀어 오르는 경우 어떤 정보도 찾을 수 없으므로 try catch를 사용하여 catch 할 수 있습니다. 또는 메서드가 비동기 콜백을 호출하거나 일어날 수있는 경우.CloudPageBlob.BeginUploadFromStream에서 throw 된 예외를 처리하는 방법

시도해 보려면 Stream을 상속 한 클래스에서 스트림을 래핑하고 생성자가 내 스트림을 인수로 사용하여 개인 변수로 유지하십시오. 그런 다음 각각의 상속 된 메서드는 private 스트림에서 equal을 호출합니다. 그러나 Read()에서는 예외를 throw하여 스트림을 읽는 중에 문제가 발생하면 어떤 일이 발생하는지 확인합니다. 그런 다음 실제 스트림이 아닌 BeginUploadFromStream()에 스트림 래퍼 인스턴스를 전달합니다.

예외가 throw 될 때 BeginUploadFromStream()이 완료되고 비동기 콜백을 호출하며 예외가 호출 된 곳까지 버블 링되지 않으므로 try catch로 catch 할 수 없습니다. 동시에 콜백에 전달 된 IAsyncResult에 대한 정보를 찾을 수 없으며 예외가 발생했습니다.

BeginUploadFromStream()이 예상대로 완료되지 않았다는 사실에 대응하려면 어떻게해야합니까?

답변

2

EndUploadFromStream으로 전화하면 예외가 표시됩니다.

+1

물론, try catch에서'EndUploadFromStream()'을 래핑하는 것은 내가 필요한 것입니다. 많은 감사합니다! –

관련 문제