2016-12-01 4 views
1

ReSharperのは、 '[NOTNULL]' 属性でWebRequest.GetResponse()。GetResponseStream()はWebExceptionを発生させずにnullを返しますか?

ラインの

var strmR = new StreamReader(replyStream);

でエンティティに警告

可能な 'NULL' の割り当てを与えます(詳細な例外処理は削除されています)。私の考えはWebException(または未処理の例外が)すでに(私は、新しいカスタム例外を処理して投げた)スローされているはずなので、私はnullを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がnullである可能性があります。WebExceptionがスローされましたか?

答えて

2

replyStreamは、nullにはなりません。 GetResponse()が成功した場合、GetResponseStreamには常に値があります。何かがうまくいかない場合、WebExceptionがスローされます。 documentation of GetResponse()はWebExceptionがスローされた場合、サーバからの応答を決定するために 例外の応答とステータスのプロパティを使用して、次の

を言います。

したがって、catch句をハンドルwebex.Responseまで拡張することができます。

1

いいえ、実際はそうではありませんが、ReSharperはそれを知りません。 GetResponseStream()は、paramを参照型として返す他の関数と同様に、nullの可能性があるStreamオブジェクトを返しますが、StreamReaderはその入力をnullにすることはできないと明示しています。

関連する問題