creator要如何捕获错误? 不接sdk的情况下。onerror 或 __errorHandler

我用了 onerror 和 __errorHandler, 但是都只能捕获到全局的那种报错, 我故意写在UI脚本里面的错误捕捉不到。
请问是我做法不对还是什么问题?

我不需要很复杂的功能, 只要客户端能捕获到脚本错误, 然后上报到自己的Log服务器就行了。
类似lua 的错误捕捉。

2赞

js: window.onerror
jsb: JS_SetErrorReporter
c++: 信号量
jni: 信号量
java:Thread.setDefaultUncaughtExceptionHandler
ios:NSSetUncaughtExceptionHandler
windows: SetUnhandledExceptionFilter

只捕获js的错误

if (cc.sys.isNative) {
    let __handler
    if (window['__errorHandler']) {
        __handler = window['__errorHandler']
    }
    window['__errorHandler'] = function (...args) {
        my.log('游戏报错,原生系统')
        handleError(...args)
        if (__handler) {
            __handler(...args)
        }
    }
}

if (cc.sys.isBrowser) {
    let __handler;
    if (window.onerror) {
        __handler = window.onerror
    }
    window.onerror = function (...args) {
        my.log('游戏报错,浏览器')
        handleError(...args)
        if (__handler) {
            __handler(...args)
        }
    }
}
6赞

马克!!!!!!!!!

666666666!!!

谢谢!但 __errorHandler 抓不住异步/Promise中的错误,还有待继续研究。

我也是用的 __errorHandler 也是不能捕捉Promise 的报错,请问你现在找到捕捉Promise 报错的方法了吗?

自己实现Promise, 自己抛出error

或者直接接SDK吧, 反正安卓和苹果都得接。
百度 bugout

mark mark

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。