美文网首页
Android全局异常捕获

Android全局异常捕获

作者: Teprinciple | 来源:发表于2019-01-03 15:00 被阅读39次

    全局异常捕获 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)
        }
    }
    

    相关文章

      网友评论

          本文标题:Android全局异常捕获

          本文链接:https://www.haomeiwen.com/subject/kgifrqtx.html