通常、WebRequest を使用してデータをダウンロードするには、次のようなコードを記述します。
using(WebResponse resp = request.GetResponse()) // WebRequest request...
using(Stream str = resp.GetResponseStream())
; // do something with the stream str
WebException がスローされた場合、WebException には WebResponse オブジェクトへの参照があり、Dispose が呼び出される場合と呼び出されない場合があります (例外が発生した場所、または応答クラスの実装方法によって異なります) - わかりません。
私の質問は、これにどのように対処するべきかということです。非常に防御的にコーディングし、WebException オブジェクトで応答を破棄することになっています (WebException は IDisposable ではないため、これは少し奇妙です)。または、これを無視して、破棄されたオブジェクトにアクセスする可能性があるか、IDisposable オブジェクトを決して破棄しないことになっていますか? WebException.Response の MSDN ドキュメントに示されている例は、まったく不十分です。