如何使用 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.
我有 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.