setExceptionCallback不能捕获js中的异常

3.x版本setExceptionCallback不能捕获js中的异常,怎么解决

void ScriptEngine::setExceptionCallback(const ExceptionCallback &cb) {
_nativeExceptionCallback = cb;
}

void ScriptEngine::setJSExceptionCallback(const ExceptionCallback &cb) {
_jsExceptionCallback = cb;
}
看看这个?不知道行不行

1赞

测试了下。setJSExceptionCallback 没用, 3.3.2
setExceptionCallback 还是有用的

请问一下这个c++代码要写在安卓工程的哪里呀

大佬解决了吗 我3.6.0 咋改好像都不行 不知道是不是我自己的问题- -

image

okok 谢谢大佬

大佬您好,我使用的版本是3.6.0-3.6.3。卡在js脚本错误上报问题好久了,大家发的帖子我也都看了,windows.onerror等接口在安卓上都不会触发,而我按您说的方法修改c++代码重写handleException接口也没有作用,我自己写了个测试例子,这些错误在v8层就被捕捉了,比如我在代码中故意写点错误逻辑的脚本,会在Object.cpp 中的以下代码捕捉
#if CC_DEBUG
if (tryCatch.HasCaught()) {
v8::String::Utf8Value stack(__isolate, tryCatch.StackTrace(__isolate->GetCurrentContext()).ToLocalChecked());
SE_REPORT_ERROR(“Invoking function failed, %s”, *stack);
}
#endif

if (!result.IsEmpty()) {
    if (rval != nullptr) {
        internal::jsToSeValue(__isolate, result.ToLocalChecked(), rval);
    }
    return true;
}
SE_REPORT_ERROR("Invoking function (%p) failed!", this);
se::ScriptEngine::getInstance()->clearException();


可以看到输出,但是这段内容,我无法捕捉到,也就做不了错误上报了,请问大佬有什么解决方案吗,还请不吝赐教

为了做更多的测试,我在一个按钮里写下了这段代码
this.close();

            console.log("----------------will error ----------------------")

            let a:any = {}

            let b:any = {}

            a.test(b)

这次则是,连错误都SE_ERROR都不算了,但是这几种情况的错误我都不知道如何捕捉,也就做不了上报

修改文件:3.6.0\resources\resources\3d\engine-native\cocos\application\CocosApplication.cpp


在上图中实现上报方法。
验证只能在release包验证。

是滴,3.6.x, debug包无法验证…
需要release,只要实现Game:HanleException就行
官方也没见给个说法,这玩意我看给不少人造成了困惑
@jare

遇到同样的问题,我可以通过window.error重写拿到这段信息,但是堆栈信息拿不到。

请问报错以后 界面完全点击不了 但是能正常收发消息是什么问题