Java中的NullPointerException(空指针异常)

NullPointerException(空指针异常)

我们来看段代码:

public class ExceptionTest {

public static void main(String[] args) {

String s = null;

s.indexOf("a");

System.out.println("end");

}

}

变量s没有初始化就调用其实例方法indexOf,运行,屏幕输出为:

Exception in thread "main" java.lang.NullPointerException

at ExceptionTest.main(ExceptionTest.java:5)输出是告诉我们:在ExceptionTest类的main函数中,代码第5行,出现了空指针异常(java.lang.NullPointerException)。

但,具体发生了什么呢?当执行s.indexOf("a")的时候,Java虚拟机发现s的值为null,没有办法继续执行了,这时就启用异常处理机制,首先创建一个异常对象,这里是类NullPointerException的对象,然后查找看谁能处理这个异常,在示例代码中,没有代码能处理这个异常,因此Java启用默认处理机制,即打印异常栈信息到屏幕,并退出程序。

在介绍函数调用原理的时候,我们介绍过栈,异常栈信息就包括了从异常发生点到最上层调用者的轨迹,还包括行号,可以说,这个栈信息是分析异常最为重要的信息。

Java的默认异常处理机制是退出程序,异常发生点后的代码都不会执行,所以示例代码中的System.out.println("end")不会执行。

https://www.bilibili.com/video/BV13G4y1T79d/?spm_id_from=333.999.0.0


版权声明:本文为m0_72882572原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。