android 全局try,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)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值