gpt4 book ai didi

java - 强制空指针异常

转载 作者:行者123 更新时间:2023-12-01 23:06:52 25 4
gpt4 key购买 nike

我正在练习JUnit测试时我不知道该怎么做 NullPointerExceptions发生。

我目前正在创建自己的 indexOf()方法,我将其与原始的 indexOf() 进行比较。我不知道如何从我的自定义 indexOf() 创建类似的输出与原始 indexOf() 具有相同的输出有一个NullPointerException

我想简单地给出错误的输出 NullPointerException给了我,但我也不知道该怎么做

这是我的代码:

public static int myIndexOf(char[] str, int ch, int index) {
if (str == null) {
// output NullPointerException
}
if (str.length <= index || index < 0) {
return -1;
}
for (int i = index; i < str.length; i++) {
if (index == str[i]) {
return i;
}
}
// if not found
return -1;
}

最佳答案

indexOf() 永远不会抛出 NullPointerException,除了带有 var == nullvar.indexOf。并且这种类型的异常由 Java 自动处理。

但是您的代码令人困惑。在大多数情况下,indexOf 是一个实例方法。如果使用静态方法,当然可以避免该问题。例如:

public static void Foo (Bar b) {
if(b != null) {
//do something
}
}

这称为总体方法:如果 bnull,则不会发生任何事情。

但是,在大多数情况下,您都会编写实例方法。当调用该方法并且实例为 null 时,Java 虚拟机本身将抛出 NullPointerException

此外,在您提供的静态方法中,您调用了str.length,因为str可以为null,Java虚拟机将检查这也会从方法本身中抛出一个 NullPointerException

<小时/>

但是,您可以使用以下模式测试 JUnit 中是否引发异常:

@Test(expected = ExpectedException.class)
public void test () throws ExpectedException {
Foo f = new Foo();
f.methodThatThrowsException();
}

如果 JUnit 没有抛出 ExpectedException 类型的异常,则认为此测试失败。

关于java - 强制空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com