在检查了JavaDocs中我正在考虑使用的方法之后requiredNonNull,我偶然发现了第一个带有单个参数的方法(T obj).
但是这个签名的特定方法的实际目的是什么?所有这一切只是投掷和NPE,我有点积极(因为我可能会遗漏一些明显的东西)无论如何都会抛出.
抛出: NullPointerException - 如果obj为null
后者实际上在调试某些代码方面是有意义的,正如文档所述,它主要是为参数验证而设计的
public static <T> T requireNonNull(T obj,String message)
检查指定的对象引用是否为null,如果是,则抛出自定义的NullPointerException.
因此,我可以与NPE一起打印特定信息,使调试变得更加容易.
考虑到这一点,我非常怀疑我会遇到一种情况,我宁愿只使用前者.请赐教.
tl; dr - 为什么你会使用不接收消息的重载.
Jes*_*per 29
编写软件时的一个好原则是尽早发现错误.您注意到的速度越快,例如null传递给方法的错误值,就越容易找出原因并解决问题.
如果你传递null给一个不应该接收的方法null,那么NullPointerException可能会发生某种情况,正如你已经注意到的那样.但是,异常可能不会发生,直到一些方法进一步下降,并且当它发生在内部深处时,找到错误的确切来源将更加困难.
因此,当方法预先检查它们的参数并在它们找到无效值时抛出异常(例如)时,它会更好null.
编辑 - 关于单参数版本:即使您不提供错误消息,检查参数并提前抛出异常将比让null传递失效更有用,直到异常发生在更深处.堆栈跟踪将指向您使用的行,Objects.requireNonNull(...)作为开发人员,您应该明白这意味着您不应该通过null.当你NullPointerException隐含地发生事件时,你不知道原始程序员是否具有该变量不应该的意图null.
| 归档时间: |
|
| 查看次数: |
5253 次 |
| 最近记录: |