我正在尝试一个关于尝试捕获的例子,但它不能按我的意愿工作.这是代码:
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区块,但事实并非如此.有任何想法吗?
NullPointerException在对象引用上调用方法时null或者您尝试访问null数组时发生A. 但这不会发生在这里.数组已正确初始化.即使您没有初始化array[3],NPE也不会出现在此处.
这里发生的是字符串转换(JLS,第5.1.11节).
如果引用为null,则将其转换为字符串"null"(四个ASCII字符n,u,l,l).
A null String被转换为String "null"连接时,因此不会发生NPE.
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |