我想测试我的应用程序并检查它是否正确处理NullPointerExceptions。
我有两个想法如何做到这一点:
throw new NullPointerException();
和
((Object) null).hashCode();
它们都产生相同的堆栈跟踪。
第二个对我来说“更真实”,因为这是我真实代码中会发生的事情。
这两个陈述之间有什么区别吗? 我应该使用哪个?
答案 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(这是完全没必要的),否则两条线在测试策略方面没有区别。