creator3.6 android端 window.console.error捕捉不到JS/TS层报错是怎么回事

emmmm 不正常

话说在c++层想要log信息是用CC_LOG_INFO方法吗?我自定义下源码看看log信息怎么走的

是 注意引入头文件 #include "base/Log.h"

发现js报错根本不走handleException,我在各个地方都有打印:
image
这两个方法都会调callExceptionCallback也就是handleException的执行位置
image
然后在错误输出也有打印:
image
结果as打印:
image
所以handleException难道不处理error? :joy:

你加了handleException不会报错吗???

加完了上面的函数后,就报了下面的错,奇怪。

上面有说,要在Game.h加引用


还有这个

那我就被你搞懵了 我之前没注意到的只是要打release包 如果你是release包下还收集不到错误 那可能还真的handleException方法能收集的错误有限制

请问你这边是怎么写测试用的错误的?我试试会不会捕捉到

捕捉到了,我写在resource.load中的错误可以捕捉到,和引擎相关的接口都捕捉不到,列如脚本的生命周期,节点的所有事件,这些引擎自己做了try catch,无法捕获,我自己写的UI打开方法是基于load的异步加载,本来自己做了try catch也捕获不了,我去掉后就正常捕获到了,这官方文档也没写折腾两天 :joy:

哪里做了trycatch呀??

我用一个空节点设置active,这个也捕获不到呢,反正是没有handleException下的日志输出。

确实挺折腾的哈哈哈

兄弟,有什么线索么?我昨天接入完成,测试时和你的情况是一样的。

节点事件和脚本生命周期里的报错是捕捉不到的

那这个没啥用阿,有什么好的解决方案么?

update里的错也不会调异常。
update里的也算生命周期难道??

算啊,官方文档有写
https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html?q=#生命周期回调

目前看来所有的报错都会经过cocos 源码 ScriptEngine 的 jsbConsoleError 方法,你可以选择改源码,在这里插入错误捕捉试试
image
不过我只测试了原生,ScriptEngine有三个,原生用的是v8版本

你是怎么找到是jsbConsoleError函数都会经过的啊 :rofl:

还有你之前说的引擎会进行try catch处理是在哪里呢,没找到啊。

靠打印啊,错误都会在as里面打印出来,我就一点一点找错误是从哪里打印的,发现就是这个函数,至于try catch,你在web预览跑项目,随便写个错误看他的stack就能找到try catch源头,下面是我在点击事件里面打的断点
image

咱俩的jsbConsoleAssert函数不太一样呢

而且我的有点奇怪,感觉全都是注释了一样。。 :joy: