Lidar com erros de aplicativos - Kotlin SDK
Nesta página
Os erros de aplicativos se enquadram em duas categorias principais:
erros de serviço ocorrem quando uma solicitação do Atlas App Services falha no nível HTTP. Esses erros geram umaServiceException
os erros de sincronização ocorrem quando o Device Sync falha. Esses erros geram uma SyncException. Para obter mais informações sobre exceções de sincronização, consulte Gerenciar erros de sincronização.
No entanto, alguns erros são efêmeros: eles ocorrem devido a falhas fora do controle do cliente ou do SDK. Por exemplo, uma tentativa fracassada de login devido a um erro de rede.
Outros erros exigem correções lógicas. Por exemplo, uma tentativa fracassada de login devido a credenciais incorretas.
Quando ocorre um erro efêmero, você deve tentar novamente a operação que causou o erro. Se a operação ainda falhar quando você tentar novamente, investigue as correções lógicas.
Erros de serviço
Uma ServiceException ocorre quando uma solicitação do Atlas App Services falha no nível do HTTP, ou seja, a solicitação do HTTP retornou, mas o código do status do HTTP não era 200 (OK).
Erros de conexão
Uma ConnectionException ocorre quando a comunicação HTTP falha entre o SDK e o backend do App Services, ou seja, a solicitação HTTP não pode receber um código de status.
Como esses erros resultam de camadas de rede fora do controle do SDK, você deve considerar esses erros efêmeros. Tente novamente a operação e investigue o erro se a nova tentativa falhar. Se a operação falhar porque o dispositivo cliente está offline, você pode solicitar ao usuário do aplicativo que tente novamente a operação quando se reconectar à Internet.
Erros de solicitação inválidos
Uma Exceção de erro ocorre a partir de App Services requests malformadas.
Quando você recebe um erro de solicitação inválida:
Verifique as entradas para a operação.
Verifique os registros da aplicação para obter mais informações sobre o que deu errado.
Erros de autenticação
Uma AuthException ocorre quando uma ação da conta de usuário, como login, logout ou registro, falha. Normalmente, você obterá um subtipo mais específico que o ajuda a identificar uma solução.
Erros do usuário já confirmados
Uma UserAlreadyConfirmedException ocorre quando você tenta confirmar um usuário que você já confirmou.
Quando você recebe um erro de usuário já confirmado, é melhor não interromper o fluxo do aplicativo. Como o usuário está confirmado, você pode prosseguir com segurança para fazer login. Não é necessário tentar confirmar novamente.
Erros de usuário não encontrado
Uma UserNotFoundException ocorre quando o backend do App Services não consegue localizar um usuário com o nome de usuário fornecido. Isso geralmente é causado por erros de digitação em nomes de usuário de e-mail/senha.
Quando você enfrentar esse erro, solicite ao usuário que insira novamente seu nome de usuário e tente novamente.
O usuário já existe erros
Uma UserAlreadyExistsException ocorre quando um cliente tenta registrar um usuário com um nome de usuário que já está em uso nesse aplicativo.
Quando você enfrentar esse erro, solicite aos usuários que:
usar um nome de usuário diferente
faça login com o nome de usuário existente se eles já tiverem uma conta
Erros de credenciais inválidas
Uma InvalidCredentialsException ocorre quando um login de usuário de um JSON web token, e-mail/senha ou chave de API falha devido a credenciais inválidas. Em vez disso, outros fornecedores de autenticação exibem um erro de autenticação .
Exemplo
Você pode lidar com erros no SDK com o runCatching integrado do Kotlin API. Use onSuccess
as onFailure
chamadas de resposta e do Resultado retornado para lidar com chamadas de API do SDK bem-sucedidas e casos de erro. O exemplo a seguir registra um usuário anônimo em um aplicativo. Se a tentativa de login for bem-sucedida, registramos a tentativa de autenticação bem-sucedida e passamos o usuário para outra tela. Se a tentativa de login falhar, lidamos com cada caso de erro potencial individualmente:
Se o usuário forneceu credenciais inválidas, registramos a tentativa e exibimos um sistema pop-up incentivando o usuário a verificar suas credenciais.
Se houver um problema com a conexão de rede, registramos o problema no registro de erros e exibimos um sistema pop-up encorajando o usuário a verificar a conexão de rede e tentar novamente.
Para todos os outros erros, registramos o problema no registro de erros e exibimos um sistema pop-up informando ao usuário que a tentativa de login falhou.
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() } } }