分享一个空指针的bug

今天分享一个线上bug,还好没有出大问题,默默改掉了。

代码大致如下:

typescript 复制代码
public class ContainTest {
    
    public static void main(String[] args) {
        List<String> list = getList();
        String a = list.get(0);
        String b = list.get(1);
        //只判断了a是否为null,没判断b,造成了contains方法抛出空指针
        if (!StringUtils.isEmpty(a)&&a.contains(b)) {
            System.out.println("a包含b");
        }
    }


    private static List<String> getList() {

        List<String> list = new ArrayList<>();
        list.add("test");
        list.add(null);
        return list;
    }
}

String的contains方法的参数不能为null,否则会抛出空指针异常。 我们看下contains方法的源码:

typescript 复制代码
public boolean contains(CharSequence s) {
    return indexOf(s.toString()) > -1;
}
相关推荐
米优5 分钟前
srs媒体流服务器二次开发-实现读取配置文件功能
服务器·后端·媒体
计算机毕设VX:Fegn08955 分钟前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
黛色正浓6 分钟前
leetCode-热题100-普通数组合集(JavaScript)
java·数据结构·算法
月明长歌10 分钟前
Java多线程线程池ThreadPoolExecutor理解总结:6 个核心参数 + 4 种拒绝策略(附完整示例)
java·开发语言
找不到、了11 分钟前
JVM 跨代引用与 Card Table 机制
java·jvm
sunywz13 分钟前
【JVM】(2)java类加载机制
java·jvm·python
进阶小白猿18 分钟前
Java技术八股学习Day13
java·jvm·学习
CodeAmaz25 分钟前
ConcurrentHashMap(JDK 7/8)详细介绍
java·hashmap·线程安全map
大猫和小黄27 分钟前
Tomcat vs Undertow 全面对比
java·tomcat