在null对象上抛出新的NullPointerException VS调用方法

时间:2013-10-15 13:25:11

标签: java nullpointerexception

我想测试我的应用程序并检查它是否正确处理NullPointerExceptions。

我有两个想法如何做到这一点:

throw new NullPointerException();

((Object) null).hashCode();

它们都产生相同的堆栈跟踪。

第二个对我来说“更真实”,因为这是我真实代码中会发生的事情。

这两个陈述之间有什么区别吗? 我应该使用哪个?

3 个答案:

答案 0 :(得分:2)

使用

throw new NullPointerException();

因为你想测试你的应用程序是否正确地使用了NullPointerException

答案 1 :(得分:2)

直接使用

throw new NullPointerException();

因为,JRE在

时抛出NullPointerException
  • 调用null对象的实例方法。

  • 访问或修改空对象的字段。

  • 将null的长度视为数组。

  • 访问或修改null的插槽,就像它是一个数组一样。

  • 抛出null,就好像它是一个Throwable值。

当你这样做时

((Object) null).hashCode();

您遇到了第一个条件而JRE抛出了NPE.

最后,你又增加了一步。而已。没有区别。

答案 2 :(得分:0)

两行代码都会抛出相同的异常,如文档所述。除非你想测试JRE / Java(这是完全没必要的),否则两条线在测试策略方面没有区别。