App errors fall into two major categories:
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 fuera del 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.
When an ephemeral error occurs, you should retry the operation that caused the error. If the operation still fails when you retry it, investigate logic fixes.
Errores de servicio
A ServiceException occurs when an Atlas App Services request fails at the HTTP level, i.e. the HTTP request returned, but the HTTP Status code was not 200 (OK).
Errores de conexión
A ConnectionException occurs when HTTP communication fails between the SDK and the App Services backend, ie. the HTTP request isn't able to receive a status code.
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.
Bad Request Errors
Una BadRequestException se produce debido a solicitudes de App Services mal formadas.
When you get a bad request error:
Check the inputs for the operation.
Consulta los registros de tu aplicación para obtener más información sobre qué salió mal.
Auth Errors
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.
User Already Confirmed Errors
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.
Errores de usuario no encontrado
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.
When you experience this error, prompt the user to re-enter their username and try again.
Errores de usuario ya existente
A UserAlreadyExistsException occurs when a client attempts to register a user with a username that is already in use in that App.
When you experience this error, prompt users to:
use a different username
Inicia sesión con su nombre de usuario existente si ya tiene una cuenta
Invalid Credentials Errors
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.
Ejemplo
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:
If the user supplied invalid credentials, we log the attempt and display a popup toast encouraging the user to check their credentials.
If there was a problem with the network connection, we log the problem to the error log and display a popup toast encouraging the user to check their network connection and try again.
For all other errors, we log the problem to the error log and display a popup toast informing the user that the login attempt failed.
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() } } }