Android全局異常捕獲

全局異常捕獲 UncaughtExceptionHandler

當app上線后,可能存在某些異常導致程序崩潰,開發(fā)者不能及時獲取到底哪里出問題。所以在開發(fā)過程中,接入了第三方Crash分析平臺比如Bugly、bugtags等。其實我們也可以很簡單的實現(xiàn)全局異常處理。

未捕獲異常大多發(fā)生在在多線程環(huán)境中,子線程拋出的異常是不能用主線程中try….catch捕獲??梢越o線程設置UncaughtExceptionHandler,當出現(xiàn)異常時會回調(diào)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)
    }
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 穩(wěn)定性測試是保障客戶端穩(wěn)定性的一種手段,致力于提前發(fā)現(xiàn)問題,收集更多異常信息,復現(xiàn)線上閃退。當Android客戶端...
    one_step123閱讀 8,453評論 0 0
  • 一、作用 當程序面對那些未捕獲異常時,我們進行一些處理,幫助自己分析解決問題。 二、使用 1.對未手動捕獲異常的處...
    四喜湯圓閱讀 760評論 0 0
  • 在全局入口Application初始化 //日志捕獲緩存類
    luchefg閱讀 2,096評論 1 3
  • Android系統(tǒng)碎片化造成應用程序崩潰嚴重,在模擬器上運行良好的程序安裝到某款手機上說不定就會出現(xiàn)崩潰的現(xiàn)象。而...
    YoungTa0閱讀 18,068評論 5 20
  • 1. 概述 本文主要講解如何自定義 Android 全局異常捕獲,以及如何通過 Dialog 展示異常信息并將異常...
    極速24號閱讀 2,858評論 0 21

友情鏈接更多精彩內(nèi)容