Can WebRequest.GetResponse()。GetResponseStream()在没有WebException的情况下返回null?
问题描述:
ReSharper的给出了警告Can WebRequest.GetResponse()。GetResponseStream()在没有WebException的情况下返回null?
可能的 '空' 分配到实体与在 '[NOTNULL]' 属性
为线
var strmR = new StreamReader(replyStream);
以下代码(已删除详细的异常处理)。
Stream replyStream;
string reply;
var query = _serverBaseUrl + queryText;
var wreq = WebRequest.Create(query);
wreq.Timeout = _serverTimeoutLimit;
try
{
replyStream = wreq.GetResponse().GetResponseStream();
var strmR = new StreamReader(replyStream);
reply = strmR.ReadLine();
}
catch (WebException webex)
{
switch (webex.Status)
{
/*throw new exceptions*/
}
}
replyStream.Close();
return reply;
我的想法是,我不应该需要检查replyStream为空因为引发WebException(或者未处理的异常)应该已经被抛出(我再处理,并抛出新的自定义除外)如果发生任何错误。
是否有可能为replyStream没有引发WebException为空已抛出?
答
replyStream
不能是null
。如果GetResponse()
成功,GetResponseStream
始终有一个值。如果出现任何问题,将引发WebException
。该documentation of GetResponse()说以下
如果引发WebException,使用 异常的响应和状态属性来确定从服务器的响应。
因此,您可以将catch
子句扩展为句柄webex.Response
。
答
不,不是真的,但ReSharper不知道。 GetResponseStream()返回一个Stream对象,它可能与任何返回param是Reference类型的其他函数类似,但StreamReader明确指出其输入不能为null。