加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.cn/)- 专有云、图像技术、经验、数据治理、专属主机!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

百年印钞厂转型求生

发布时间:2021-02-12 18:07:17 所属栏目:外闻 来源:互联网
导读:更多断言的信息,查看java手册的Asserts; 检查参数的合法性非常重要,即使你的方法中没有用到,但是存储起来了,后面会用到。 举个例子: 静态工厂方法: 输入一个 int数组 ,返回一个array的 list视图, 如果客户端传入 null, 这个方法会抛出NPE, 因为方法

更多断言的信息,查看java手册的Asserts;

检查参数的合法性非常重要,即使你的方法中没有用到,但是存储起来了,后面会用到。

举个例子: 静态工厂方法: 输入一个 int数组 ,返回一个array的 list视图, 如果客户端传入 null, 这个方法会抛出NPE, 因为方法会有一个直接检查,调用了Objects.requireNonNull。如果忽略检查,方法会返回一个引用新创建的List的实例;

而客户端尝试使用的时候回抛出NPE; 这个时候,原始的List实例很难决定,很大可能会复杂到变成一个调试任务。

 

注意:

  • 文档注释并没有说, 如果m是空,mod将抛出NullPointException, 尽管这个方法确实会这样。调用m.signum()的时候这个异常被标注在类级别BigInteger的文档注释上,类级别的注释适用于所有的公共方法的参数,这是一个避免在每个方法单独的文档化标注NullPointException这种混乱的好方法。

也许可以结合@Nullable或者类似的注解来指明特殊参数可以为空,但是这个实践并不是标准的,并且有很多注解可以用来达到这个目的。

Objects实用类

Objects.requireNonNull方法,在Java7中添加的,非常的灵活和方便,所以没有理由手动的执行空指针检查。 你也可以指定异常的详细信息,这个方法返回自己的输入,所以你可以在使用该值的时候执行一个空指针检查。

 

程度说明

  • 糟糕方法会在执行过程中失败然后抛出一个不明确的异常;
  • 更糟糕方法会正常返回,但是悄悄的计算了一个错误的值。

最糟糕方法正常返回,但是一些对象处在一个不正确的状态,未来一个不确定的时间点在某些无关联的点会造成一个错误。

一句话总结:参数不校验会导致原子性失败。

推荐做法

对公共和保护方法,使用java文档的@throws标签来标注参数值不合法将抛出的异常。

常见的参数校验的异常类型如下:

 

该在错误发生的时候尽快的检查出来,这是基本原则。

如果你不这么做,当错误发生的时候,错误将不会被检测出来,这让定位错误的源头变得更困难。

如果一个非法参数传递到一个方法中,在方法执行前进行了参数检查。它将会快速失败,并给出清晰的异常信息。

如果方法没有检查参数,下面这些事情会发生。


(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读