Uso de Retrofit, Coroutines y Moshi para manejar errores que no son 200 | por Kelvin Kioko | Julio de 2021
Podemos comenzar con un controlador de excepción de rutina, que se agregará a viewmodelScope.launch () que envuelve la llamada de red.
Ahora tenemos nuestra red Solicite un empaquetado perfecto, ahora podemos extraer nuestro error de la excepción detectada por el controlador de excepciones. Lo primero que debe hacer es comprender la estructura general del error, para este caso usaremos esta respuesta de error.
Basado en este error, crearemos un Tipo de datos Se utilizará para almacenar datos de Cuerpo de error () Antes de devolver la excepción a ViewModel para realizar más acciones. Tendremos dos tipos de datos;
I. ApiError: guarda dos valores, información, (Inicializado para estar vacío) y, error, Tipos de ApiErrorMessages (Inicializado para estar vacío).
ii. ApiErrorMessages – guardar un valor, teléfono, Tipos de Lista<字符串> A menos que se asigne otro valor del cuerpo del error de excepción, se inicializará en vacío
A continuación, usamos una función para extraer la respuesta adecuada del cuerpo del error de excepción. Esta función acepta un parámetro HttpException, crea un JsonAdapter basado en la clase de datos que creamos anteriormente y verifica que la respuesta de excepción y el cuerpo del error no estén vacíos. De lo contrario, verifica si el cuerpo del error es una cadena simple o JSON, luego asigna el error a la clase de datos ApiError y lo devuelve a la función de solicitud.
Mientras la función de extracción se enfría, pasemos a la función de lanzamiento excepcional que hará la mayor parte del trabajo pesado. Esta función de extensión obtiene la excepción de la solicitud de red y la asigna a algunas excepciones conocidas que anticipamos que pueden ocurrir. Si coincide con la excepción correcta, asignamos la respuesta adecuada a la clase ApiError y la devolvemos al modelo de vista. Si necesitamos hacer una excepción al error en el cuerpo del error, llamamos a la función extractExceptionMessage y pasamos la excepción como parámetro.
Una vez que el controlador de extensión se ejecuta y genera una respuesta de error valiosa, se devuelve al ViewModel. Allí puede crear una cadena de error válida basada en sus llamadas de red y excepciones de error y mostrársela al usuario.
Espero ayudarlo a lidiar con errores que no sean 200 fácilmente Modernización + Corutina + Mohi.