Java Try Catch NullPointerException

ber*_*rkc 1 java arrays

我正在尝试一个关于尝试捕获的例子,但它不能按我的意愿工作.这是代码:

public static void main(String[] args)
{
    //This array's size is 5 and it has 4 Strings in it. 
    String[] array = new String[5];
    array[0] = "Hello";
    array[1] = "World";
    array[2] = "try catch";
    array[4] = "error";

    try
    {
        for(int i = 0 ; i<array.length ; i++)
            System.out.println("This array has: "+array[i]);

    } catch (NullPointerException e)
    {
        System.out.println("Null!!!");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

这个数组有:你好

这个阵列有:世界

这个数组有:try catch

这个数组有:null

这个数组有:错误

它应该进入catch区块,但事实并非如此.有任何想法吗?

rge*_*man 7

NullPointerException在对象引用上调用方法时null或者您尝试访问null数组时发生A. 但这不会发生在这里.数组已正确初始化.即使您没有初始化array[3],NPE也不会出现在此处.

这里发生的是字符串转换(JLS,第5.1.11节).

如果引用为null,则将其转换为字符串"null"(四个ASCII字符n,u,l,l).

A null String被转换为String "null"连接时,因此不会发生NPE.