小金家的沐沐
小金家的沐沐
  • 发布:2023-07-20 08:55
  • 更新:2023-07-20 10:24
  • 阅读:163

Android 自定义基座 全局在原生拦截异常

分类:uni-app
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {  

            @Override  
            public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) {  
                // 处理全局异常,例如上传错误日志等  
                // 这里可以根据具体需求自定义异常处理逻辑  

                MyLog.i(tag, e.toString());  
            }  
        });

在自己的一个插件的Application中去增加的这个,手动的抛出了 RuntimeException ,这边拦截无法全局拦截异常。

我记得以前有个地方我看到了,但是我搜遍了论坛百度都没找到了。

论坛有个同样的问题,但是锁了,这个是不是别人发现了问题,可以关联起来,方便后面的人查。

2023-07-20 08:55 负责人:无 分享
已邀请:
小金家的沐沐

小金家的沐沐 (作者)

小金家的沐沐

小金家的沐沐 (作者)

找到解决方案
在安卓中,自定义相关的Application 必须要继承我们的io.dcloud.application.DCloudApplication,不然会初始化异常的。
参考了 这个地方文档处理

然后在Oncrreate中,我们需要拦截我们的全局异常。

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {  

                @Override  
                public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) {  
                    // 处理全局异常,例如上传错误日志等  
                    // 这里可以根据具体需求自定义异常处理逻辑  

                    MyLog.i(tag, e.toString());  
                }  
            });

测试代码:

Timer timer = new Timer();  
        timer.schedule(new TimerTask() {  
            @Override  
            public void run() {  
                int ined = 0;  
                if (ined == 0) {  
                    throw new RuntimeException("笑死");  
                }  
            }  
        },  20000);

要回复问题请先登录注册