Acciones avanzadas para el manejo de errores en aplicaciones móviles

MobileTogether 2.1 incluye nuevas acciones de manejo de errores "Try/Throw" y "Catch" para aplicaciones móviles, lo que permite a los desarrolladores crear rutinas de manejo de errores sofisticadas que mejoran la experiencia del usuario final. Por ejemplo, si una aplicación intenta conectarse a un servicio web de terceros, pero el servidor no está disponible, las acciones de manejo de errores permiten una recuperación adecuada.

Las funciones de manejo de errores de MobileTogether para aplicaciones móviles funcionan de la misma manera en todas las plataformas, lo que ahorra tiempo a los desarrolladores, ya que no es necesario personalizar el manejo de errores según los requisitos de cada sistema operativo móvil.

En nuestra publicación anterior, titulada "Servicios REST como fuentes de datos para aplicaciones móviles", utilizamos una aplicación de demostración que llama a un servicio REST alojado por la USGS para obtener valores de altitud precisos a partir de coordenadas geográficas.

Podemos utilizar las estructuras "Try/Catch" para gestionar dos tipos diferentes de errores que podrían ocurrir durante la ejecución del servicio REST:

  • Podríamos encontrarnos con un error de conexión al servidor de la USGS
  • Podríamos recibir un valor de elevación de -1000000, lo que significa que el USGS nos está indicando que no dispone de datos de elevación para las coordenadas proporcionadas

Podemos incluir toda la llamada al servicio REST y las acciones posteriores para manipular los datos dentro de un bloque "Try", como se muestra aquí:

Si la conexión al servicio web falla, todas las acciones posteriores dentro de la acción "Try" se interrumpirán. Si no se recibe ningún dato del USGS, no tiene sentido intentar la acción "Actualizar nodo(s)" mencionada anteriormente. En este ejemplo, una sola acción se interrumpiría, pero se pueden colocar múltiples acciones, grupos de acciones, o incluso grupos de acciones que llamen a otros grupos de acciones dentro de la acción "Try".

De manera similar, la acción "Catch" también puede realizar múltiples operaciones que se ejecutan únicamente cuando se produce un error. En la captura de pantalla anterior, "Catch" muestra un cuadro de mensaje que indica que la conexión falló y, además, realiza la actualización de los nodos utilizando el mismo valor de elevación que la USGS proporcionaría en caso de un error de rango. Por supuesto, se pueden colocar múltiples acciones, grupos de acciones, o incluso grupos de acciones que llamen a otros grupos de acciones dentro de la acción "Catch", al igual que se hace con "Try".

Control de flujo más complejo con acciones de manejo de errores para aplicaciones móviles

El verdadero potencial del manejo de errores mediante las estructuras "try/catch/throw" se manifiesta cuando una aplicación móvil requiere una lógica de programación más compleja.

Consideremos el caso en el que un grupo de acciones contiene una serie de operaciones, como comandos de base de datos o llamadas a servicios web, que deben ejecutarse en secuencia, y donde cada llamada depende del éxito de la anterior. Se vuelve extremadamente engorroso verificar el resultado de cada paso en una estructura condicional "if-else". En cambio, se puede definir de manera clara y elegante una acción de base de datos que lance una excepción en caso de error, y luego tener un único bloque de captura al final donde se muestre el error.

Esta captura de pantalla muestra el uso de las estructuras "try/catch" en una aplicación móvil que permite explorar y analizar automáticamente los informes financieros de alto nivel de empresas públicas estadounidenses, extraídos de los documentos XBRL que se encuentran en la base de datos EDGAR de la SEC

Si alguna de las cinco consultas a la base de datos falla, se genera un error, se omiten las demás acciones que se encuentran dentro del bloque "Try", y la variable que contiene el texto del mensaje de error indica qué consulta falló.

Manejo de errores anidado mediante bloques try/catch

Puede incluso definir un manejador de errores "try/catch" en un grupo de acciones y permitir que se produzca la excepción en un subgrupo de acciones separado, que se llama desde la acción principal. De hecho, esto puede estar anidado profundamente y la excepción podría ocurrir en alguna acción que esté anidada varias veces.

En ese momento, el control vuelve directamente a la rama "catch" del manejador de errores externo, donde el error se procesa, de la misma manera en que funciona el mecanismo try/catch/throw en otros lenguajes de programación.

El software MobileTogether Designer, que incluye funciones de manejo de errores (try/catch/throw) para aplicaciones móviles, es gratuito Descargue su copia ahora!