如何使用 RxJava 2 处理错误异常?

How to handle error exceptions with RxJava 2?

我有 UserDoesNotHaveApiKey 异常,代码如下:

public class UserDoesNotHaveApiKeyException extends Exception {}

现在在初始屏幕上,我会检查用户是否有 API 键,我想在 onError 中抛出 UserDoesNotHaveApiException 并打开登录屏幕。

正如您在 onError 内部可以看到的那样,我有 if 语句并且它总是转到 else,即使很明显我有一个正确的异常。

为什么?

长话短说,RuntimeException 不同于其他异常。

您可以抛出异常、它的适当的现有子类(RuntimeException 及其未经检查的子类除外)或 Exception 的自定义子类。

在Java中,有两种类型的异常——已检查异常和未检查异常。摘要如下:

  • Checked – Extends java.lang.Exception, for recoverable condition, try-catch the exception explicitly, compile error.
  • Unchecked – Extends java.lang.RuntimeException, for unrecoverable condition, like programming errors, no need try-catch, runtime error.