是否引发NullPointerException ...

这周,我又经历了几年前的经历,但在对面的座位上。

作为软件架构师/团队负责人/技术负责人(选择您更喜欢的术语),我正在对一个正在进行的项目进行代码审查,偶然发现了一个看起来像这样的代码:

publicvoidsomeMethod(Typeparameter){

    if(parameter==null){
        thrownewNullPointerException("Parameter Type cannot be null");
    }
    // Rest of the method
}

我非常震惊! 抛出NullPointerException的应用代码,这是一个很大的编码错误。 因此,我轻轻地向开发人员指出这是一个坏主意,我希望他抛出一个IllegalArgumentException ,该异常类型与用例完全匹配。 在我脑海中这很清楚,直到开发人员向我指出了NullPointerException Javadoc 。 为了简单起见,这是多汁的部分:

当应用程序在需要对象的情况下尝试使用null时抛出。 这些包括:

  • 调用null对象的实例方法。
  • 访问或修改null对象的字段。
  • null的长度视为数组。
  • 访问或修改null插槽,就好像它是一个数组一样。
  • null当作Throwable值一样抛出。

应用程序应抛出此类的实例,以指示对null对象的其他非法使用。

再次阅读最后一句话:“ 应用程序应抛出此类的实例以指示对null对象的其他非法使用 ”。 应用程序抛出NPE似乎是合法的,甚至Javadocs也建议这样做。

在我以前的案例中,我一次又一次地阅读它...并裁定是的,应用程序可以抛出NPE是可以的。 回到今天:一位开发人员审查了另一个请求的拉取请求,发现它抛出了NPE,并裁定这是不好的做法。 我站在前开发人员的一边,说还可以。

您的裁决是什么,更重要的是,为什么?

注意:无论决定如何,这都不是什么大不了的事,可能不值得花时间争论一下

翻译自: https://blog.frankel.ch/throwing-a-nullpointerexception-or-not/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值