RxJava中的业务exception没有崩溃,上层无法感知,都被框架捕获了

探讨RxJava中如何处理运行时异常,特别是在Android MVP架构中如何避免程序崩溃,并提出改进方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RxJava中runtime exception为什么没有崩溃

  • RxJava链式调用异步请求map变换操作符给大家实现android MVP结构的组织带来了极大的便利。
  • 优美的代码,让复杂的业务逻辑清晰明了,同时也方便了代码的跟踪、问题的定位。

  • 当我们在业务实现中出现业务异常的时候,app并没有崩溃,但是我们的后续业务执行却没有体现在界面上。

  • 这个时候非常难定位问题的根源在哪里,因为我们的logcat也并没有输出明显的ERROR日志

  • 具体问题看下面的代码截图就能一幕了然

onNext中的业务空指针exception

Rx框架将exception catch住了

  • 描述问题:当我们在进行业务请求的时候会在onNext()中去出来拿到的response数据,那么如果我们在处理过程中出现了nullPoint Exception,RXjava会帮我们catch住运行时异常注意了:坑就在这里,catch住以后就会回调onError()方法。
  • 通常我们在onError()中最多是打印控制台日志,或者打出exception的堆栈信息,但是程序并没有崩溃,也不会有崩溃日志持久化输出。
  • 定位问题就会很难

总结与体会:

第一点:RxJava不应该catch runtime exception,而是应该抛出
第二点:我们可以自己实现工具类在onError中判断exception的类型,将运行时异常抛出,自定义exception则根据业务实际情况进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值