java.lang.StackOverflowError: null(栈内存溢出)递归导致

2023-11-12

通常是递归导致,或者死循环。

在方法里调用了自己,导致无限调用,很快就会报错StackOverflowError。

例如:有些初学者会犯如下错误

//这是service类
public void saveEntity(Emp emp){
    this.saveEntity(emp);
}

 老司机凭肌肉记忆都知道是这样写:

//这是service类
public void saveEntity(Emp emp){
    empMapper.saveEntity(emp);
}

还有一些是不容易发现的:

public xxxClient getConnection(){
    if(client != null){
        return new xxxClient(xxx);
    }
    if(!client.isConnected()){
        closeClient(); // 节点1
        return new xxxClient(xxx);
    }
}

public void closeClient(){
    xxxClient connect = getConnection(); // 节点2
    if(connect!=null && this.client != null){
        this.client.close();
        this.client = null;
    }
}

程序会在节点1和节点2之间无限调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.StackOverflowError: null(栈内存溢出)递归导致 的相关文章

随机推荐