2010/02/16(Tue) 01:55:21 編集(投稿者)
■No47006 (こあら さん) に返信
>>なんか変だな、と思うのですが。
>
> そうですね。私も変だと思います。というか、フレームワークの設計ミスでは・・・
お。
同志が。
> みたいに、WebRequest.GetResponseの戻り値とWebException.Responseが同じインスタンスを指す実装って
> できないんでしたっけ?
できるんですが…。
InnerMethod( arg, arg, ... ) {
try {
response = request.GetReponse;
return response;
} finally {
if (request.status = error) throw new webexception(response)
}
}
returnされたreponseを使う側では普通はUsingを使いますよね。
OuterMethod {
try
Using (response = SomeMethodReturnsResponse( args, args )) {
'正常系
}
} catch ex as WebException {
if ( ex.Response.Status == XX ) { #ここでObjectDisposedException
MessageBos("some error occurred.")
}
using ( stream = ex.Response.GetReponseStream ) { #ここでObjectDisposedExceptionやIOException
ReadErrorMessage(stream)
}
}
}
という感じで、
普通に使うことができなくなってしまいます。
Usingを使わずにFinallyで囲んで、WebExceptionのキャッチを他の例外のキャッチと毎回確実に別にすればいいのですが…。
やってられない。