Как обрабатывать исключения ошибок с RxJava 2? - PullRequest
1 голос
/ 17 апреля 2019

У меня UserDoesNotHaveApiKey исключение со следующим кодом:

public class UserDoesNotHaveApiKeyException extends Exception {}

Теперь на экране Splash я проверил, есть ли у пользователя ключ API или нет, и я хочу выбросить UserDoesNotHaveApiException внутри onError и открыть экран входа в систему.

enter image description here

Как вы можете внутри onError, у меня есть оператор if, и он всегда переходит к другому, даже очевидно, что у меня есть правильное исключение.

Почему?

1 Ответ

1 голос
/ 17 апреля 2019

Короче говоря, RuntimeException отличается от других исключений.

Вы можете выдать исключение, соответствующий существующий его подкласс (за исключением RuntimeException и его подклассов, которые не проверены) или пользовательский подкласс Exception.

В Java существует два типа исключений - исключение с проверкой и без проверки. Вот резюме:

  • Проверено - расширяет java.lang.Exception, для восстанавливаемого состояния, попробуйте поймать исключение явно, ошибка компиляции.
  • Не проверено - расширяется java.lang.RuntimeException, для невосстановимого условия, такие как ошибки программирования, нет необходимости в try-catch, ошибка времени выполнения.
...