Android全局异常捕获

全局异常捕获 UncaughtExceptionHandler

当app上线后,可能存在某些异常导致程序崩溃,开发者不能及时获取到底哪里出问题。所以在开发过程中,接入了第三方Crash分析平台比如Bugly、bugtags等。其实我们也可以很简单的实现全局异常处理。

未捕获异常大多发生在在多线程环境中,子线程抛出的异常是不能用主线程中try….catch捕获。可以给线程设置UncaughtExceptionHandler,当出现异常时会回调UncaughtExceptionHandler中的uncaughtException(Thread t, Throwable e) 方法。

// 全局所有线程设置
Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler handler);

// 指定线程设置
thread.setUncaughtExceptionHandler( UncaughtExceptionHandler handler);

class CrashHandler : Thread.UncaughtExceptionHandler {

    /**
     *  单例对象
     */
    companion object {
        val Instance by lazy { CrashHandler() }
    }

    private lateinit var mContext: Context

    override fun uncaughtException(t: Thread?, e: Throwable?) {

        // todo 自己处理异常逻辑,服务端上包、存本地log、弹出弹窗等
    }

    /**
    * 在Application 中进行全局初始化
    */
    fun init(context: Context) {
        mContext = context
        Thread.setDefaultUncaughtExceptionHandler(this)
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 稳定性测试是保障客户端稳定性的一种手段,致力于提前发现问题,收集更多异常信息,复现线上闪退。当Android客户端...
    one_step123阅读 8,526评论 0 0
  • 一、作用 当程序面对那些未捕获异常时,我们进行一些处理,帮助自己分析解决问题。 二、使用 1.对未手动捕获异常的处...
    四喜汤圆阅读 776评论 0 0
  • 在全局入口Application初始化 //日志捕获缓存类
    luchefg阅读 2,109评论 1 3
  • Android系统碎片化造成应用程序崩溃严重,在模拟器上运行良好的程序安装到某款手机上说不定就会出现崩溃的现象。而...
    YoungTa0阅读 18,072评论 5 20
  • 1. 概述 本文主要讲解如何自定义 Android 全局异常捕获,以及如何通过 Dialog 展示异常信息并将异常...
    极速24号阅读 2,873评论 0 21

友情链接更多精彩内容