通常,人们会编写类似这样的代码来使用 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对象?
MSDN文档对WebException.Response的示例是完全不够的。