加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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>等等,或您自己的自定义异常

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读