Gestión de errores en ActionScript 3.0

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

Puesto que muchas aplicaciones pueden ejecutarse sin crear la lógica para gestionar errores, los desarrolladores pueden sentirse tentados de aplazar la aplicación de la gestión de errores en sus aplicaciones. Sin embargo, sin la gestión de errores, una aplicación puede bloquearse fácilmente o frustrar al usuario si algo no funciona de la forma prevista. ActionScript 2.0 presenta una clase Error que permite crear una lógica en funciones personalizadas y generar una excepción con un mensaje específico. Puesto que la gestión de errores es esencial para facilitar la utilización de las aplicaciones, ActionScript 3.0 incluye una arquitectura ampliada para capturar errores.

Nota: aunque en Referencia de ActionScript 3.0 para la plataforma de Adobe Flash se documentan las excepciones que generan muchos métodos, puede que no se incluyan todas las excepciones posibles de cada método. Puede que un método genere una excepción para errores de sintaxis u otros problemas que no se menciona explícitamente en la descripción del método, aun cuando en esta se enumeren algunas de las excepciones.

Elementos de la gestión de errores de ActionScript 3.0

ActionScript 3.0 incluye muchas herramientas para la gestión de errores:

  • Clases Error. ActionScript 3.0 incluye una amplia gama de clases Error que amplían el ámbito de situaciones que pueden producir objetos de error. Cada clase Error ayuda a las aplicaciones a gestionar y responder a condiciones de error específicas, ya sean relativas a errores de sistema (como una condición MemoryError), errores de codificación (como una condición ArgumentError) errores de red y comunicación (como una condición URIError), o bien otras situaciones. Para obtener más información sobre cada clase, consulte Comparación de las clases Error .

  • Menos errores sin mensaje. En versiones anteriores de Flash Player, los errores se generaban y mostraban solo si se usaba explícitamente la sentencia throw. En Flash Player 9 y versiones posteriores de los motores de ejecución de Flash, los métodos y las propiedades de ActionScript generan errores en tiempo de ejecución que permiten gestionar estas excepciones de forma más eficaz cuando se producen, así como reaccionar individualmente ante cada excepción.

  • Se muestran mensajes de error claros durante la depuración. Si se usa la versión de depuración de un motor de ejecución de Flash, el código o las situaciones que produzcan problemas generarán mensajes de error detallados que permitirán identificar fácilmente los motivos del error en un bloque de código determinado. Estos mensajes hacen que la solución de errores resulte más eficaz. Para obtener más información, consulte Trabajo con las versiones de depuración de los motores de ejecución de Flash .

  • Los errores precisos permiten que los usuarios vean mensajes de error claros. En las versiones anteriores de Flash Player, el método FileReference.upload() devolvía un valor booleano false si la llamada upload() era incorrecta, e indicaba uno de cinco errores posibles. Si se produce un error al llamar al método upload() en ActionScript 3.0, cuatro errores específicos ayudan a mostrar mensajes de error más precisos a los usuarios finales.

  • Gestión de errores mejorada. Se generan errores diferentes para una gran variedad de situaciones habituales. Por ejemplo, en ActionScript 2.0, antes de que se llenara un objeto FileReference, la propiedad name tenía el valor null ; de este modo, antes de poder usar o mostrar la propiedad name , es necesario asegurarse de que el valor está establecido y no es null . En ActionScript 3.0, si se intenta acceder a la propiedad name antes de que se especifique su valor, Flash Player generar un error de tipo IllegalOperationError, que indica que no se ha establecido el valor y que se pueden usar bloques try..catch..finally para gestionar el error. Para obtener más información, consulte Uso de sentencias try..catch..finally, sentencias .

  • No se producen problemas de rendimiento significativos. La utilización de los bloques try..catch..finally para gestionar errores no consume recursos adicionales (o consume muy pocos recursos) en comparación con las versiones anteriores de ActionScript.

  • Existe una clase ErrorEvent que permite crear detectores de eventos de errores asincrónicos específicos. Para obtener más información, consulte Respuesta al estado y a los eventos de error .

Estrategias de gestión de errores

Mientras la aplicación no detecte una situación problemática, se podrá ejecutar correctamente si no se crea una lógica de gestión de errores en el código. Sin embargo, si no se gestionan los errores activamente y la aplicación detecta un problema, los usuarios nunca sabrán por qué falla la aplicación.

Hay diferentes formas de abordar la gestión de errores en la aplicación. En la lista siguiente se resumen las tres opciones principales para gestionar errores:

  • Uso de las sentencias try..catch..finally . Estas sentencias capturarán los errores cuando se produzcan. Se pueden anidar las sentencias en una jerarquía para capturar excepciones en varios niveles de la ejecución del código. Para obtener más información, consulte Uso de sentencias try..catch..finally, sentencias .

  • Creación de objetos de error personalizados. Se puede usar la clase Error para crear objetos de error personalizados, lo que permite hacer un seguimiento de operaciones específicas de la aplicación que no estén incluidas en los tipos de error integrados. Posteriormente puede utilizar sentencias try..catch..finally en sus propios objetos de error personalizados. Para obtener más información, consulte Creación de clases de error personalizadas .

  • Especificación de detectores y controladores de eventos para responder a eventos de error. Mediante esta estrategia, se pueden crear controladores de error globales que permiten gestionar eventos similares sin duplicar demasiado código en bloques try..catch..finally . Además, es más probable capturar errores asincrónicos con este método. Para obtener más información, consulte Respuesta al estado y a los eventos de error .