如何正确抛出 nullPointerException?
How to properly throw nullPointerException?
我需要编写一个方法 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;
}
当我使用一个我知道将为空的值执行它时,我得到以下输出:
Exception in thread "main"
java.lang.NullPointerException
at hw4.LinkedList.delete(LinkedList.java:168)
at hw4.LLTest1.main(LLTest1.java:23)
但是,如果我从我的代码中删除 throw new NullPointerException();
行,当我使用我知道将为 null 的值执行代码时,我仍然会收到相同的错误消息。
我的问题是,我是否正确地执行了 throw new NullPointerException();
命令,如果没有,我该如何修正它的执行?
首先,您通常不会 抛出 NullPointerException
。
这是引用 null
值时抛出的未经检查的异常,表示编码错误而不是可恢复的条件。
其次,当您没有在代码中明确抛出异常,但看到它仍然抛出时,您的 current
值可能是 null
,因此 current.next
会扔掉它。
您可以尝试抛出一些显式异常:
IndexOutOfBoundsException
NoSuchElementException
IllegalStateException
- 等等等,或者您自己的自定义异常
我需要编写一个方法 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;
}
当我使用一个我知道将为空的值执行它时,我得到以下输出:
Exception in thread "main"
java.lang.NullPointerException
at hw4.LinkedList.delete(LinkedList.java:168)
at hw4.LLTest1.main(LLTest1.java:23)
但是,如果我从我的代码中删除 throw new NullPointerException();
行,当我使用我知道将为 null 的值执行代码时,我仍然会收到相同的错误消息。
我的问题是,我是否正确地执行了 throw new NullPointerException();
命令,如果没有,我该如何修正它的执行?
首先,您通常不会 抛出 NullPointerException
。
这是引用 null
值时抛出的未经检查的异常,表示编码错误而不是可恢复的条件。
其次,当您没有在代码中明确抛出异常,但看到它仍然抛出时,您的 current
值可能是 null
,因此 current.next
会扔掉它。
您可以尝试抛出一些显式异常:
IndexOutOfBoundsException
NoSuchElementException
IllegalStateException
- 等等等,或者您自己的自定义异常