2016-12-01 67 views
1

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为空已抛出?

回答

2

replyStream不能是null。如果GetResponse()成功,GetResponseStream始终有一个值。如果出现任何问题,将引发WebException。该documentation of GetResponse()说以下

如果引发WebException,使用 异常的响应和状态属性来确定从服务器的响应。

因此,您可以将catch子句扩展为句柄webex.Response

1

不,不是真的,但ReSharper不知道。 GetResponseStream()返回一个Stream对象,它可能与任何返回param是Reference类型的其他函数类似,但StreamReader明确指出其输入不能为null。

相关问题