代码之家  ›  专栏  ›  技术社区  ›  Quibblesome

NullRefs应该被捕获吗?

  •  4
  • Quibblesome  · 技术社区  · 17 年前

    我最近对一位同事说:

    被明确抓住

    我用了“从不”这个词。…嗯。我自己从来没有见过捕捉它们的合适用例,但我想看看其他人是否有?

    6 回复  |  直到 17 年前
        1
  •  6
  •   Marc Gravell    17 年前

    这取决于为什么;请参阅埃里克·利珀特的 blog entry .

        2
  •  4
  •   Brann    17 年前

    好吧,当你调用一个有缺陷的第三方库时,ocasionnaly会导致空引用,如果你知道如何正确处理它们,那么捕捉它们可能是一个好主意。

    过去,我广泛使用了第三方编辑器提供的数据网格。 他们有(或此时有)一个已确认的错误,在更新底层数据源中的某些数据时,该错误会不时抛出一个空引用(嵌套在他们的调用堆栈深处)。

                try
                {
                    // do the update
                }
                catch (NullReferenceException)
                {
                    try
                    {
                        // redo the update
                    }
                    catch (NullReferenceException ex)
                    {
                        // properly log the third party lib failure
                    }
                }
    

    现在第三方编辑器已经修复了这个问题,我可能应该删除这段代码。

        3
  •  4
  •   Brann    17 年前

    被明确抓住 引发异常的代码

        4
  •  1
  •   Bill    17 年前

    捕获NullReferenceException(或Java的NPE)总是取决于代码的目的。

    例如,如果你的应用程序要求即使在潜在的不确定状态下也要继续处理(比如生命支持系统),或者如果你的代码不关心被引用对象的状态(例如:批处理数据会抛出坏数据)。

    不抓住这些类型的例外是一个很好的经验法则,但不是法律。

        5
  •  0
  •   Brian Rasmussen    17 年前

        6
  •  0
  •   Martijn    17 年前

    我曾经不得不根据大约15个变量的值构建一个大字符串。我没有检查每个变量是否为空,而是继续创建字符串,取消对变量的引用,并捕获NRE。说实话,这感觉很糟糕,很淘气,但它让我不用写很多代码。

    推荐文章