java – 如何正确抛出nullPointerException?
发布时间:2020-12-15 04:47:02 所属栏目:Java 来源:网络整理
导读:我需要编写一个方法delete(),它接受一个int参数k并删除链表中的第k个元素(如果存在).我也想看看列表是空的,还是k超出界限.如果其中任何一个为真,我想抛出一个NullPointerException.我到目前为止的代码如下. public void delete(int k){ Node current = head;
我需要编写一个方法delete(),它接受一个int参数k并删除链表中的第k个元素(如果存在).我也想看看列表是空的,还是k超出界限.如果其中任何一个为真,我想抛出一个NullPointerException.我到目前为止的代码如下.
public void delete(int k){ Node current = head; for (int i = 0; i < k; i++){ if(head == null && current.next == null){ throw new NullPointerException(); } else { current = current.next; // Move pointer to k position } } remove(current.item); --N; } 当我用一个我知道将为null的值执行它时,我得到以下输出: Exception in thread "main" java.lang.NullPointerException at hw4.LinkedList.delete(LinkedList.java:168) at hw4.LLTest1.main(LLTest1.java:23) 但是,如果我删除了抛出新的NullPointerException();从我的代码行,我仍然得到相同的错误消息执行代码时,我知道该值将为null. 我的问题是,我实现了抛出新的NullPointerException();命令是否正确,如果没有,我该如何修复它的实现呢? 解决方法
首先,您通常不会抛出NullPointerException.
这是引用空值时抛出的未经检查的异常,表示编码错误而不是可恢复条件. 其次,当你没有在你的代码中明确抛出异常时,无论如何都看到它被抛出,你的current值很可能是null,因此current.next会抛出它. 您可以尝试一些显式异常来抛出: > IndexOutOfBoundsException> NoSuchElementException> IllegalStateException>等等,或您自己的自定义异常 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |