WebRequest.GetResponse()。GetResponseStream()可以在没有WebException的情况下返回null吗?

时间:2016-12-01 09:49:49

标签: c# .net error-handling resharper

Resharper发出警告

  

可能' 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 是否为null,因为应该已经抛出了 WebException (或未处理的异常)(我如果发生任何错误,则处理并抛出新的自定义异常。

如果没有抛出 WebException replyStream 是否可以为null?

2 个答案:

答案 0 :(得分:2)

replyStream不能是null。如果GetResponse()成功,则GetResponseStream始终具有值。如果出现任何问题,则抛出WebExceptiondocumentation of GetResponse()表示以下

  

如果抛出WebException,请使用的Response和Status属性   确定服务器响应的异常。

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

答案 1 :(得分:1)

不,不是真的,但ReSharper不知道。 GetResponseStream()返回一个Stream对象,该对象可能是null,就像返回param的任何其他函数一样,是一个引用类型,但StreamReader特别指出它的输入不能为null。