Rxjava的onError方法定位空指针
最近一直在使用kotlin+Rxjava写项目。碰到一个空指针(那个null是后来定位到了打印出来的)。情况如下:
override fun onError(e: Throwable) {
Log.e(TAG, "onError:" + e)
}
空指针?小意思。仔细一看:没有定位?
没有定位!!!
没有定位!!!
没有定位!!!
就问你绝不绝望?我onNext方法中的操作有40行左右。上哪去找这个空指针?
也许你会说:你不会写个全局捕获异常吗?我个人觉得try-catch里面写那么多代码狠low。
研究了一个多小时,找到解决方案:
override fun onError(e: Throwable) {
Log.e(TAG, "onError:" + e)
e?.stackTrace?.forEach {
Log.e(TAG, "stackTrace---element:" +it?.toString())
}
}
结束语
在百度解决方案的时候,真的觉得蛮无奈的。根本没有类似的案例,都是关于错误处理操作符的文章,可能是大神们觉得没必要写出来吧。百度不到,我就只能去看官方的文档了。其实看文档解决问题的速度更快。
stackTrace是不能直接打印的,直接打印打出来的是内存值。需要遍历。