[java基础] 001 - 记一次堆栈溢出异常(StackOverFlowError)

经理安排解决接口异常任务,首次调用接口成功,再次调用报错。查看日志发现是StackOverflowError,经排查是result和orderResultList引用传递相互引用,导致toString解析异常。还提及Java引用和值传递相关文章,最后修正代码并总结此次排错情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

上午经理发来一个任务,解决某个接口异常,此接口第一次调用成功返回:

{ret=Y, orderResultList=[{itemno=31920190521083622032, sub_msg=成功, isSuccess=true}]}

再次调用则全部返回:

Exception when eval result.toString:null


 

查看日志:是StackOverflowError

找到对应的xxxxxServiceImpl,看到几行代码:

从而找到此方法调用的地方:

继续浏览代码,看到:

恍然大悟,原来如此。

result和orderResultList用的是引用传递,他俩相互引用造成了toString解析结构异常,从而造成StackOverflowError,

最终演变成了我看到的【Exception when eval result.toString:null】。

关于java引用传递和值传递,看下面这篇文章:

https://www.cnblogs.com/xiaoxiaoyihan/p/4883770.html

现在修正代码,改成如下:

小结:此bug埋的精巧,看代码容易一眼带过,所以我用了近乎半天的时间。一是自身能力不足(上方内容若有误,恳请不吝指出),二是项目不熟悉,情绪焦躁,排斥看代码。

 

over!

转载于:https://www.cnblogs.com/ruanian/p/10901969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值