Error management¶
Os erros que acontecem no contexto do SDK estão envolvidos em um tipo de exceção: D2Error, com os seguintes campos:
| Atributo | Modelo | Opcional | Descrição |
|---|---|---|---|
| errorComponent | D2ErrorComponent | verdade | Origem do erro: Banco de dados, SDK ou servidor. |
| Erro de código | D2ErrorCode | verdade | Código de erro exclusivo definido pelo SDK. |
| descrição de erro | Corda | verdade | Descrição do erro em inglês (detalhes técnicos, apenas para logs e depuração). |
| httpErrorCode | Inteiro | falso | Se causado por solicitação HTTP, código de erro HTTP. |
| originalException | Exceção | falso | Exceção Java original que causa o erro, se houver. |
Qualquer operação solicitada ao SDK pode gerar um erro.
-
For
suspendoperations, the error is thrown directly and can be caught as usual:try { d2.userModule().suspendLogIn(username, password, url) } catch (d2Error: D2Error) { Log.e("LOGIN", "${d2Error.errorComponent()} ${d2Error.httpErrorCode()} ${d2Error.errorCode()}") } -
Para operações que retornam objectos RxJava, os erros podem ser extraídos Da seguinte maneira:
d2.userModule().rxLogIn(username, password, url) .subscribe( { user -> }, { error -> if (error is D2Error) { Log.e("LOGIN", "${error.errorComponent()} ${error.httpErrorCode()} ${error.errorCode()}") } }, ) -
Para operações de bloqueio, também é possível recuperar um
D2Error. The errors can be extracted by catching them as shown in the following fragmento de código:try { d2.userModule().blockingLogIn(username, password, url) } catch (e: Exception) { val cause = e.cause if (cause is D2Error) { Log.e("LOGIN", "${cause.errorComponent()} ${cause.httpErrorCode()} ${cause.errorCode()}") } }
D2Errors são persistidos no banco de dados quando ocorrem, então eles podem ser analisado posteriormente e diagnosticar possíveis problemas. Eles podem ser acessados através de seu próprio repositório:
d2.maintenanceModule().d2Errors()
.byD2ErrorComponent().eq(D2ErrorComponent.Server)
.suspendGet()
A equipe do SDK agora está trabalhando junto com a equipe principal para fornecer uma lista completa de códigos de erro comuns, mas ainda é um trabalho em andamento.