应用例外

特定于使用 App Services 和 Device Sync 的所有异常的顶级类。

此类的子类分为两大类: ServiceExceptionSyncException

  1. ServiceException是由通过 HTTP 请求直接与 App Services 通信的所有 API 抛出的。 io.realm.kotlin.mongodb.Appio.realm.kotlin.mongodb.Userio.realm.kotlin.mongodb.auth.EmailPasswordAuth类处理 SDK 的 HTTP 请求。

  2. SyncException由使用 Device Sync API(即使用 io.realm.kotlin.MongoDB SyncConfiguration 打开 Realm)时引起的错误引发。这些错误通过 io.realm.kotlin.mongodb.SyncConfiguration.Builder.errorHandler 传播。

每个类别又进一步划分:

位于层次结构底部的异常是可操作的,即应从异常中清楚可以采取哪些操作来解决它。

异常在层次结构的更高位置对错误进行分类。 以对应用的最终用户有意义的单一方式对它们做出React可能比较困难,但应将其记录下来以供日后检查。

在大多数情况下,只有位于层次结构底部的异常才会记录在 API 文档中,其中一个值得注意的特殊情况: ConnectionException 。 假定此异常是由所有提及ServiceException并涵盖所有传输错误的方法引发的。 这些通常是间歇性的,因此捕获此异常并重试通常应该是安全的,但可以在ConnectionException的文档中找到更多信息。

考虑到上述异常层次结构,处理错误的合理方法可能如下所示:

val app = App.with("my-app-id")
runCatching {
app.login(Credentials.emailPassword("myemail@mail.com", "mypassword"))
}.onSuccess {
gotoMainScreen()
}.onFailure { ex: Throwable ->
when(ex) {
is InvalidCredentialsException -> {
showWrongPasswordDialog()
}
is ConnectionException -> {
CrashLogger.log(ex.toString())
showRetryLoginDialog()
}
else -> {
CrashLogger.log(ex.toString())
showContactAdministratorDialog()
}
}
}

有关特定异常的更多信息,请参阅该异常的文档。

另请参阅

继承者

属性

链接已复制到剪贴板
打开 val 原因: Throwable?
链接已复制到剪贴板
打开 val message: 字符串?