在C#Object Instantiation中,如果捕获异常,则需要进行空检查

时间:2014-05-24 19:07:09

标签: c# null instantiation

我一直在寻找stackoverflow,但还没有看到ansswer。注意:我确实在C ++中看到了一些好的响应,但没有看到C#。

如下所示检查null if (reader == null)是否有任何好处,或者导致它为null的问题是否导致if (reader == null)无法访问的异​​常(reader == null为true)?

try
{
    var reader = new PhotoReader();
    if (reader == null)
    {
        throw new InvalidOperationException("PhotoReader could not be created.");
    }
}
catch (Exception ex)
{
    // let user know failed object creation, etc.
    <...>
}

2 个答案:

答案 0 :(得分:5)

不,由于c#中的构造函数调用,你无法获得null

构造函数本身可能会抛出异常,但无论如何它都会破坏您的执行流程。

答案 1 :(得分:1)

通过分配类的构造函数的结果来实例化reader这一事实意味着它永远不会为null,因此不需要检查。