关于js循环报错闪屏问题

  • Creator 版本:2.4.3,2.4.4

  • 目标平台: android

  • 重现方式:js代码异常,大部分是读取属性异常cannot read property xxx of undefined

  • 首个报错:

    目前creator 在android原生上只要有任何的报错就会不断的循环报错,然后导致游戏闪屏卡死,这导致我们发布到现网的游戏,只要遇到一些边界情况,临界值,就会出现卡死进不去游戏,而且日志循环刷很难找到第一次触发的数据,定位困难。

    最近更是遇见活动日期进入了之前测试没有考虑到的时间点,导致所有用户进入不了游戏的情况。虽然我们也能加强测试和研发质量,但是也不能要求所有产品没有bug,这种周边功能直接导致游戏进不去的情况让我们用cocos都快用到怀疑人生了。

    之前在论坛上也看到有人反馈过这个问题,但是没有找到解决方案,求助有哪位大佬有解决方案能够提供下,或者引擎实在觉得这个循环报错有必要能否提供一个开关让我正式版本不要这样卡死

1赞

所以~
公司的一个项目用2dx-lua重写了。。。
:cry:

需要设计好你项目的架构,用try-catch捕获到你的报错,这样就会一直报了

感觉引擎完全没有站在实际项目角度考虑,如果线上运营的项目老是因为一些无关紧要的功能卡死,谁还愿意用这个引擎

你是想说不会一直报了吧。
其实这个想法理论上是没有问题得,但是实际上,不管是设计多好,还是测试有多严谨,一个软件项目不可能完全没有bug,只是花费得成本越高bug数量越少,像我们小公司,更多得是以最少得成本容忍一些小问题上线版本。

那你就多一点try catch 多一点判空,另外使用严格模式约束自己。当然,其实这些不治本,这些都只是语法层面的。

大佬能否提供一些,出现异常了影响不这么大得思路,我们做得再严谨也只能保证bug少,不能说保证不出bug

同样的问题困扰。求官方解决下。

这其实就是你第一次报错的数据了,因为报错了mainloop会一直循环当前帧,所以会一直刷。
最重要的就是你的脚本已经是jsc加密过的了,你仅仅需要一个jsc解密工具
https://github.com/OEDx/cocos-jsc-endecryptor
解出来根据堆栈的提示19269行,就能找到问题所在点了

同样碰到了这个问题。
行为和 web 版本大相径庭,不应该因为异常而循环当前帧。
搜了下论坛历史上有出现同样的问题: 2.0.10在生命周期start里出现报错 会一直抛出报错并导致游戏卡死
希望官方能修复 @jare @jareguo

@jare @jareguo 确实,现在公司大型项目也有这方面的需求。js报错,不能游戏直接卡死。毕竟不是自己开发的独立游戏,很难确保多人合作没有问题,一有问题,就直接炸了。

  • 太影响用户的体验了
  • 对测试人员也极度不友好,真机,一直闪屏

全局捕获异常是否可以解决你所说的问题呢

如何全局捕获异常?

同样遇到同样遇到

23年的新人遇到同样问题,怎么避免呢,小公司大项目,不可能线上项目没有bug,一出问题感觉用户就得流失了