Java中的NullPointerException(空指针异常)

256 阅读1分钟

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")不会执行。

[]www.bilibili.com/video/BV13G…