Comparación de las clases Error

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

ActionScript proporciona varias clases Error predefinidas. Sin embargo, puede utilizar la mismas clases Error en su propio código. Existen dos tipos principales de clases Error en ActionScript 3.0: las clases Error principales de ActionScript y las clases Error del paquete flash.error. El contenido de paquete flash.error está formado por clases adicionales, introducidas para ayudar al desarrollo y la depuración de aplicaciones de ActionScript 3.0.

Clases Error principales

Entre las clases de error principales se incluyen Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError y VerifyError. Cada una de estas clases se encuentra en el espacio de nombres de nivel superior.

Nombre de clase

Descripción

Notas

Error

La clase Error puede usarse para generar excepciones. Se trata de la clase base para otras clases de excepción definidas en ECMAScript: EvalError, RangeError, ReferenceError, SyntaxError, TypeError y URIError.

La clase Error es la clase base para todos los errores en tiempo de ejecución y se recomienda para cualquier clase de error personalizada.

ArgumentError

La clase ArgumentError representa un error que se produce cuando los valores de parámetro proporcionados durante una llamada de función no coinciden con los parámetros definidos para dicha función.

Ejemplos de errores de argumento:

  • Se proporcionan pocos o demasiados argumentos a un método.

  • Se esperaba que un argumento fuera miembro de una enumeración, pero no fue así.

EvalError

La excepción EvalError se genera si se pasan parámetros al constructor de la clase Function, o bien si el código del usuario llama a la función eval() .

En ActionScript 3.0, se ha eliminado la compatibilidad con la función eval() ; los intentos de uso de esta función generarán errores.

Las versiones anteriores de Flash Player utilizaban la función eval() para acceder a variables, propiedades, objetos o clips de película por su nombre.

RangeError

Se genera una excepción RangeError si un valor numérico queda fuera del rango admitido.

Por ejemplo, la clase Timer generará una excepción RangeError si la demora es negativa o no finita. También se puede generar RangeError si se intenta añadir un objeto de visualización a una profundidad no válida.

ReferenceError

Se emite una excepción ReferenceError cuando se intenta realizar una referencia a una propiedad no definida en un objeto cerrado (no dinámico). Las versiones del compilador de ActionScript anteriores a ActionScript 3.0 no generaban errores al intentar acceder a una propiedad undefined . Sin embargo, ActionScript 3.0 emite la excepción ReferenceError en estas condiciones.

Las excepciones para variables no definidas señalan errores potenciales, lo que ayuda a mejorar la calidad del software. Sin embargo, si el usuario no está acostumbrado a inicializar las variables, es posible que este nuevo comportamiento de ActionScript requiera cambios en sus hábitos de programación.

SecurityError

La excepción SecurityError se genera cuando se produce una infracción de la seguridad y se deniega el acceso.

Ejemplos de errores de seguridad:

  • Se realiza un acceso a una propiedad o una llamada a un método no autorizada a través del límite del entorno limitado de seguridad.

  • Ha habido un intento de acceso a una URL no permitida por el entorno limitado de seguridad.

  • Se ha intentado establecer una conexión de socket con un puerto, pero la política de sockets necesaria no estaba presente.

  • Ha habido un intento de acceso a la cámara o al micrófono del usuario; este ha denegado la solicitud de acceso al dispositivo.

SyntaxError

Se genera una excepción SyntaxError cuando se produce un error de análisis en el código de ActionScript.

Se puede generar SyntaxError en las circunstancias siguientes:

  • ActionScript emite excepciones SyntaxError cuando la clase RegExp analiza una expresión regular no válida.

  • ActionScript emite excepciones SyntaxError cuando la clase XMLDocument analiza XML no válido.

TypeError

Se genera la excepción TypeError cuando el tipo real de un operando es diferente del tipo esperado.

Se puede generar una excepción TypeError en las circunstancias siguientes:

  • No se ha podido forzar el tipo de parámetro formal de un parámetro real de una función o un método.

  • Se ha asignado un valor a una variable y no se puede forzar el tipo de la variable.

  • El lado derecho del operador is o instanceof no es un tipo válido.

  • La palabra clave super se utiliza de manera no permitida.

  • Una consulta de propiedad da como resultado más de una vinculación y, por consiguiente, resulta ambigua.

  • Se ha llamado a un método en un objeto incompatible. Por ejemplo, se genera una excepción TypeError si se inserta un método de la clase RegExp en un objeto genérico y luego se llama.

URIError

Se genera la excepción URIError cuando una de las funciones de gestión de URI global se utiliza de manera incompatible con esta definición.

Se puede generar una excepción URIError en las circunstancias siguientes:

Se especifica un URI no válido para una función de la API de Flash Player que espera un URI válido, como Socket.connect() .

VerifyError

Se genera una excepción VerifyError cuando se detecta un archivo SWF mal formado o dañado.

Cuando un archivo SWF carga otro archivo SWF, el archivo SWF principal puede capturar una excepción VerifyError generada por el archivo SWF cargado.

Clases Error del paquete flash.error

El paquete flash.error contiene clases Error que se consideran partes integrantes de la API del motor de ejecución de Flash. A diferencia de las clases Error descritas anteriormente, el paquete flash.error comunica eventos de error específicos de los motores de ejecución de Flash (Flash Player o Adobe AIR).

Nombre de clase

Descripción

Notas

EOFError

La excepción EOFError se emite al intentar leer más allá del final de los datos disponibles.

Por ejemplo, se emitirá una excepción EOFError si se llama a uno de los métodos de lectura de la interfaz IDataInput y no hay datos suficientes para satisfacer la petición de lectura.

IllegalOperationError

Se genera una excepción IllegalOperationError si un método no se implementa, o bien si la implementación no abarca el uso actual.

Ejemplos de excepciones de errores de operación no permitida:

  • Una clase base, como DisplayObjectContainer, proporciona mayor funcionalidad de la que puede admitir el escenario. Por ejemplo, si se intenta obtener o establecer una máscara en el escenario (mediante stage.mask ), el motor de ejecución de Flash generará un error IllegalOperationError con el mensaje "La clase Stage no implementa esta propiedad o método".

  • Una subclase hereda un método que no requiere y que no desea admitir.

  • Se llama a determinados métodos de accesibilidad al compilar Flash Player sin compatibilidad de accesibilidad.

  • Las funciones exclusivas de edición se llaman desde una versión de Flash Player en tiempo de ejecución.

  • Se intenta establecer el nombre de un objeto que se coloca en la línea de tiempo.

IOError

Se genera una excepción IOError cuando se produce algún tipo de excepción de E/S.

Este error se obtiene, por ejemplo, si se intenta realizar una operación de lectura y escritura en un socket no conectado o que haya perdido la conexión.

MemoryError

Se genera una excepción MemoryError cuando falla una petición de asignación de memoria.

De forma predeterminada, la máquina virtual de ActionScript (ActionScript Virtual Machine 2) no impone ningún límite en cuanto a la memoria que puede asignar un programa de ActionScript. En un sistema escritorio, los errores de asignación de memoria no son frecuentes. Se generará un error cuando el sistema no pueda asignar la memoria necesaria para una operación. De este modo, en un sistema de escritorio, esta excepción es poco habitual, a menos que la petición de asignación sea muy grande. Por ejemplo, una petición de 3.000 millones de bytes resulta imposible, ya que un programa para Microsoft® Windows® de 32 bits solo puede acceder a 2 GB del espacio de direcciones.

ScriptTimeoutError

Se genera una excepción ScriptTimeoutError cuando se alcanza un intervalo de tiempo de espera del script de 15 segundos. Si se captura una excepción ScriptTimeoutError, se puede gestionar el tiempo de espera del script con mayor comodidad. Si no hay controlador de excepciones, la excepción no capturada mostrará un cuadro de diálogo con un mensaje de error.

Para evitar que un desarrollador malintencionado capture la excepción y permanezca en un bucle infinito, solo se puede capturar la primera excepción ScriptTimeoutError generada durante la ejecución de un script determinado. El código del usuario no podrá capturar una excepción ScriptTimeoutError posterior; esta se dirigirá inmediatamente al controlador de excepciones.

StackOverflowError

La excepción StackOverflowError se genera cuando se agota la pila disponible para el script.

Una excepción StackOverflowError puede indicar que se ha producido recursión infinita.