xCrash icon indicating copy to clipboard operation
xCrash copied to clipboard

关于异常处理机制

Open dlluotian opened this issue 2 years ago • 3 comments

这个有个小小的建议,希望SDK只能加个参数,自己处理异常,比如结束当前进程并重启,而不是直接结束程序。 现在要满足重启的需要,只能修改源码

dlluotian avatar Nov 14 '22 06:11 dlluotian

rethrow 这个设置为true,然后你可以自己再次拿到这个异常去处理。

superoidlau avatar Mar 28 '23 10:03 superoidlau

这个有个小小的建议,希望SDK只能加个参数,自己处理异常,比如结束当前进程并重启,而不是直接结束程序。 现在要满足重启的需要,只能修改源码

直接结束,是因为你把rethrow 设置为false导致的。

superoidlau avatar Mar 28 '23 10:03 superoidlau

这个有个小小的建议,希望SDK只能加个参数,自己处理异常,比如结束当前进程并重启,而不是直接结束程序。 现在要满足重启的需要,只能修改源码

直接结束,是因为你把rethrow 设置为false导致的。

感觉您的回复,只是如果不修改源码,只是将rethrow设置true,可以实现重启,但是效果并不好的,我测试设备小米11,这样会白屏一段时间,并且有几率无法重启,原因不明。

修改成如下,就会非常丝滑

    if (this.rethrow) {
        if (defaultHandler != null) {
            defaultHandler.uncaughtException(thread, throwable);
        }
    } else {
        //这里我们自己做重启逻辑
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    ProcessPhoenix.triggerRebirth(getContext());
    }

dlluotian avatar Mar 31 '23 07:03 dlluotian