Question 82
Given a method that must ensue that its parameter is not null:
11. public void someMethod(Object value) {
12. // check for null value
....
20. System.out.println(value.getClass());
21. }
What, inserted at line 12, is the appropriate way to handle a null
value?
A. assert value == null;
B. assert value !null, “value is null”
C. if (value == null) {
throw new AssertionException(“value is null”)
D. if (value == null) {
throw new IllegalArgumentException(“value is null”)
Answer: D请问各个答案有什么区别啊?也就是我搞不明白为什么D可以而其它答案不可以啊?谢谢。。
Given a method that must ensue that its parameter is not null:
11. public void someMethod(Object value) {
12. // check for null value
....
20. System.out.println(value.getClass());
21. }
What, inserted at line 12, is the appropriate way to handle a null
value?
A. assert value == null;
B. assert value !null, “value is null”
C. if (value == null) {
throw new AssertionException(“value is null”)
D. if (value == null) {
throw new IllegalArgumentException(“value is null”)
Answer: D请问各个答案有什么区别啊?也就是我搞不明白为什么D可以而其它答案不可以啊?谢谢。。
断言不是很懂,不过d的异常抛的应该是没问题,IllegalArgumentException表示传递了不合法的参数,应为要调用value.getClass()方法,value为null确实是不合法的
B. assert value !null, “value is null”
C. if (value == null) {
throw new AssertionException(“value is null”)
D. if (value == null) {
throw new IllegalArgumentException(“value is null”)
A,选A的话,只判断value是否为空,不是空就算了,如果是空呢,程序还要继续向下执行,则会发生异常
B,B是什么意思,是输出“value is null” 么,如果是的话,和A没什么区别,只是比A多了一个输出状况,同样发生异常
C,抛出异常,但抛出的异常类型不对
D,IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数。 如果判断是否为null,异常应该是NullPointerException吧
NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用