分享一个空指针的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;
}
相关推荐
karry_k2 分钟前
什么是Fork/Join?
java·后端
卷Java5 分钟前
小程序前端功能更新说明
java·前端·spring boot·微信小程序·小程序·uni-app
magicalmuggle16 分钟前
Java 后端开发复习指南
java·spring
karry_k20 分钟前
四大函数式接口与Stream流式计算
后端
南方者1 小时前
【JAVA】【BUG】经常出现的典型 bug 及解决办法
java·oracle·bug
Cosolar1 小时前
什么是 ONNX Runtime?
后端·架构
Cosolar1 小时前
榨干每一滴算力:ONNX Runtime 多维优化实战指南
后端·架构
databook1 小时前
Manim实现渐变填充特效
后端·python·动效
come112341 小时前
Go Modules 包管理 (Go 模块)
开发语言·后端·golang
Cosolar1 小时前
释放模型潜能:ONNX Runtime 如何进行优化与加速?
后端·架构