Docs Menu
Docs Home
/ /
Conectar a Atlas

Gestionar errores de aplicaciones - SDK de Kotlin

Los errores de las aplicaciones se dividen en dos categorías principales:

  • Los errores de servicio ocurren cuando una solicitud de Atlas App Services falla en el nivel HTTP. Estos errores generan un ServiceException

  • Loserrores de sincronización ocurren cuando falla la sincronización del dispositivo. Estos errores generan una SyncException. Para obtener más información sobre las excepciones de sincronización, consulte "Gestionar errores de sincronización".

Sin embargo, algunos errores son efímeros: ocurren debido a fallos ajenos al control del cliente o del SDK. Por ejemplo, un intento fallido de inicio de sesión debido a un error de red.

Otros errores requieren correcciones lógicas. Por ejemplo, un intento de inicio de sesión fallido debido a credenciales incorrectas.

Cuando se produce un error temporal, debe reintentar la operación que lo causó. Si la operación sigue fallando al reintentarla, investigue soluciones lógicas.

Una ServiceException ocurre cuando una solicitud de Atlas App Services falla en el nivel HTTP, es decir, la solicitud HTTP se devuelve, pero el código de estado HTTP no es 200 (OK).

Una ConnectionException ocurre cuando falla la comunicación HTTP entre el SDK y el backend de App Services, es decir, la solicitud HTTP no puede recibir un código de estado.

Dado que estos errores provienen de capas de red fuera del control del SDK, debe considerarlos efímeros. Reintente la operación e investigue el error si falla. Si la operación falla porque el dispositivo cliente está desconectado, puede pedirle al usuario de la aplicación que la reintente al volver a conectarse a internet.

Una BadRequestException se produce debido a solicitudes de App Services mal formadas.

Cuando recibes un error de solicitud incorrecta:

  • Verifique las entradas para la operación.

  • Consulte los registros de su aplicación para obtener más información sobre lo que salió mal.

Una AuthException se produce cuando falla una acción de la cuenta de usuario, como iniciar sesión, cerrar sesión o registrarse. Normalmente, obtendrá un subtipo más específico que le ayudará a identificar una solución.

Una UserAlreadyConfirmedException ocurre cuando intenta confirmar un usuario que ya ha confirmado.

Si recibe un error de usuario ya confirmado, es mejor no interrumpir el flujo de la aplicación. Dado que el usuario está confirmado, puede iniciar sesión sin problemas. No es necesario volver a intentar la confirmación.

Se produce una excepción UserNotFoundException cuando el backend de App Services no puede encontrar un usuario con el nombre de usuario proporcionado. Esto suele deberse a errores tipográficos en los nombres de usuario de correo electrónico o contraseña.

Cuando experimente este error, solicite al usuario que vuelva a ingresar su nombre de usuario y lo intente nuevamente.

Una UserAlreadyExistsException ocurre cuando un cliente intenta registrar un usuario con un nombre de usuario que ya está en uso en esa aplicación.

Cuando experimente este error, solicite a los usuarios que:

  • usa un nombre de usuario diferente

  • Iniciar sesión con su nombre de usuario existente si ya tienen una cuenta

Ocurre una InvalidCredentialsException cuando un inicio de sesión de usuario con JWT, correo electrónico/contraseña o clave API falla debido a credenciales no válidas. Otros proveedores de autenticación lanzan un Error de Auth en su lugar.

Puede manejar errores en el SDK con runCatching integrado de Kotlin API. Utilice el onSuccess y onFailure devoluciones de llamada del resultado devuelto para gestionar las llamadas a la API del SDK correctas y los casos de error. El siguiente ejemplo registra a un usuario anónimo en una aplicación. Si el intento de inicio de sesión es exitoso, registramos el intento de autenticación y pasamos al usuario a otra pantalla. Si el intento de inicio de sesión falla, gestionamos cada posible caso de error individualmente:

  • Si el usuario proporcionó credenciales no válidas, registramos el intento y mostramos una ventana emergente que alienta al usuario a verificar sus credenciales.

  • Si hubo un problema con la conexión de red, registramos el problema en el registro de errores y mostramos una ventana emergente que anima al usuario a verificar su conexión de red e intentarlo nuevamente.

  • Para todos los demás errores, registramos el problema en el registro de errores y mostramos una ventana emergente informando al usuario que el intento de inicio de sesión falló.

val app = App.create(YOUR_APP_ID)
runCatching {
app.login(Credentials.emailPassword(email, password))
}.onSuccess {
Log.v("Successfully logged in")
// transition to another activity, load a fragment, to display logged-in user information here
}.onFailure { ex: Throwable ->
when (ex) {
is InvalidCredentialsException -> {
Log.v("Failed to login due to invalid credentials: ${ex.message}")
Toast.makeText(baseContext,
"Invalid username or password. Please try again.", Toast.LENGTH_LONG).show()
}
is ConnectionException -> {
Log.e("Failed to login due to a connection error: ${ex.message}")
Toast.makeText(baseContext,
"Login failed due to a connection error. Check your network connection and try again.", Toast.LENGTH_LONG).show()
}
else -> {
Log.e("Failed to login: ${ex.message}")
// generic error message for niche and unknown fail cases
Toast.makeText(baseContext,
"Login failed. Please try again.", Toast.LENGTH_LONG).show()
}
}
}

Volver

Llamar a una función Atlas

En esta página