自己遇到过的出现java.lang.StackOverflowError的原因

Posted 慧妃不美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己遇到过的出现java.lang.StackOverflowError的原因相关的知识,希望对你有一定的参考价值。

    public static JSONArray geth24Weather(String result) {//获取当天24小时以及第二天的天气结果对象
        JSONObject fromObject = null;
        JSONArray h24weatherArray =null;
        try {
            int indexOf = result.indexOf("{");
            int lastIndexOf = result.lastIndexOf("}");
            result=result.substring(indexOf, lastIndexOf+1);
            String replaceAll = result.replaceAll(" ", "");

            if(replaceAll.trim().startsWith("{")){
            fromObject = JSONObject.fromObject(result);
            }
            //System.out.println("fromObject"+fromObject);
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(fromObject!=null&&fromObject.get("code").equals("0")){
             JSONArray jsonArray = fromObject.getJSONArray("data");//获取天气数据对象
             JSONArray  forecastArray= ((JSONObject)jsonArray.get(0)).getJSONArray("forecast");//获取预报天气对象
             JSONObject todayObj= (JSONObject)forecastArray.get(0);//获取到当天对象
             if(todayObj.containsKey("h24weather")&&todayObj.get("h24weather")!=null){
                 System.out.println("打印todayObj="+todayObj);
                 h24weatherArray=todayObj.optJSONArray("h24weather");
                if(h24weatherArray==null){
                     geth24Weather(result);
                 }
                 System.out.println("打印h24weatherArray="+h24weatherArray);
             }else{
                
                 System.out.println("空");
             }
            
        }
        return h24weatherArray;
    }

这个就是递归没有结束条件,一旦遇到result是null那么这个就会无限循环下去,就会在栈中不断调用方法,直至栈溢出。



































以上是关于自己遇到过的出现java.lang.StackOverflowError的原因的主要内容,如果未能解决你的问题,请参考以下文章

开发中遇到过的坑

这不就是自己想要的吗?

在CMD下运行编译过的java文件,用java命令出现“找不到或无法加载主类”问题

一些工作上遇到过的坑

ORACLE 之 标识符无效 问题总结及解决方案

ORACLE 之 标识符无效 问题总结及解决方案