总结Java NullPointerException 异常出现情况,以及如何从根源上避免空指针异常

2026-06-12 02:05:35 by admin 争霸赛事

空指针异常是什么?

空指针异常(java,lang.NullPointException)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/ec4f283394a54011bd06b90b07ef02d8.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LW16ZuvX-WQjuerr-W8gOWPkeW3peeoi-W4iA==,size_16,color_FFFFFF,t_70,g_se,x_16)

![]( https://img-blog.csdnimg.cn/74d3695d335645bb8e7d16a545bde6ac.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LW16ZuvX-WQjuerr-W8gOWPkeW3peeoi-W4iA==,size_14,color_FFFFFF,t_70,g_se,x_16)

可能产生空指针的场景

场景复现

package com.github.ybqdren;

/**

* Wen(Joan) Zhao

* 2021/11/3

*

*

理解什么是空指针

*/

public class WhatIsNpe {

public static class User{

private String name;

private String[] address;

public void print(){

System.out.println("This is User Class !");

}

public String readBook(){

System.out.println("User Read Imooc Escape !");

return null;

}

}

/**

*

自定义一个运行时异常

*/

public static class CustomException extends RuntimeException{

}

}

第一种情况:调用了空对象的实例方法

User user = null;

user.print();

控制台抛出异常

Exception in thread "main" java.lang.NullPointerException

at com.github.ybqdren.WhatIsNpe.main(WhatIsNpe.java:29)

堆栈指向了第29行

第二种情况:访问了空对象的属性

User user = null;

System.out.println(user.name);

第三种情况:当数组是一个空对象的时候,取它的长度

此处的User和上面的区别是:此处是有值的。所以访问属性和方法都是可行的,但是数组是没有经过初始化的,是一个空对象因此会报空指针异常

User user = new User();

System.out.println(user.address.length);

第四种情况:null 当作Throwable的值

CustomException exception = null;

throw exception;

第五种情况:方法的返回值为null,调用方直接去使用

User user = new User();

System.out.println(user.readBook().contains("MySQL"));

如何避免引起空指针

● 使用之前一定要初始化,或检查是否初始化

● 尽量避免在函数中返回NULL,或给出详细的注释(良好的编程习惯)

● 外部传值,除非有明确的说明(非NULL),否则,应定要及时判断

● ......

参考引用

Java实操避坑指南 课堂笔记

Copyright © 2088 0762网游争霸活动中心 All Rights Reserved.
友情链接