Comparaison des classes Error

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

ActionScript fournit de nombreuses classes Error prédéfinies. Vous pouvez toutefois faire appel aux mêmes classes Error dans votre propre code. Il existe deux types principaux de classes Error dans ActionScript 3.0 : les classes Error de base d’ActionScript et les classes Error du package flash.error. Le package flash.error contient des classes supplémentaires permettant le débogage et le développement d’applications ActionScript 3.0.

Classes Error de base

Parmi les classes Error de base figurent les classes Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError et VerifyError. Chacune de ces classes se trouve dans l’espace de noms de niveau supérieur.

Nom de classe

Description

Remarques

Error

La classe Error permet de renvoyer des exceptions et correspond à la classe de base des autres classes d’exception définies dans ECMAScript : EvalError, RangeError, ReferenceError, SyntaxError, TypeError et URIError.

La classe Error sert de classe de base à toutes les erreurs d’exécution et est recommandée pour toutes les classes d’erreur personnalisées.

ArgumentError

La classe ArgumentError représente une erreur qui se produit lorsque les valeurs de paramètre fournies lors d’un appel de fonction ne correspondent pas aux paramètres définis pour celle-ci.

Voici des exemples d’erreurs d’argument :

  • Trop ou trop peu d’arguments sont fournis à une méthode.

  • Un argument devait être membre d’une énumération, et cela n’a pas été le cas.

EvalError

Une exception EvalError est renvoyée si des paramètres sont transmis au constructeur de la classe Function ou si le code utilisateur appelle la fonction eval().

Dans ActionScript 3.0, la prise en charge de la fonction eval() a été supprimée et toute tentative d’utilisation de la fonction entraîne le renvoi d’une erreur.

Les versions précédentes de Flash Player utilisaient la fonction eval() pour accéder à des variables, des propriétés, des objets ou des clips par nom.

RangeError

Une exception RangeError est renvoyée si une valeur numérique excède la plage acceptable.

Par exemple, une exception RangeError est renvoyée par la classe Timer si un retard est négatif ou infini. Elle peut également être renvoyée si vous tentez d’ajouter un objet d’affichage à une profondeur non valide.

ReferenceError

Une exception ReferenceError est renvoyée lorsque vous tentez d’utiliser une référence à une propriété non définie pour un objet scellé (non dynamique). Les versions du compilateur ActionScript antérieures à ActionScript 3.0 ne renvoyaient pas d’erreur lorsque vous tentiez d’accéder à une propriété non définie. ActionScript 3.0 renvoie toutefois l’exception ReferenceError dans ce cas de figure.

Les exceptions pour des variables non définies pointent vers des bogues éventuels afin d’améliorer la qualité du logiciel. Cependant, si vous n’avez pas l’habitude d’initialiser les variables, ce nouveau comportement d’ActionScript requiert de vous quelques changements lorsque vous écrivez du code.

SecurityError

L’exception SecurityError est renvoyée lorsqu’une violation de sécurité se produit et que l’accès est refusé.

Voici des exemples d’erreurs de sécurité :

  • Un accès à une propriété ou un appel de méthode non autorisé est effectué en franchissant les limites du sandbox de sécurité.

  • Il s’est produit une tentative d’accès à une URL non autorisée par le sandbox de sécurité.

  • Il s’est produit une tentative de connexion socket sur un port, mais le fichier de régulation socket approprié n’était pas présent.

  • Il s’est produit une tentative d’accès à la caméra ou au microphone de l’utilisateur et celui-ci a refusé l’accès au périphérique.

SyntaxError

Une exception SyntaxError est renvoyée lorsqu’il se produit une erreur d’analyse dans votre code ActionScript.

Une exception SyntaxError peut être renvoyée dans les cas suivants :

  • ActionScript renvoie des exceptions SyntaxError lorsque la classe RegExp analyse une expression régulière non valide.

  • ActionScript renvoie des exceptions SyntaxError lorsque la classe XMLDocument analyse un code XML non valide.

TypeError

L’exception TypeError est renvoyée lorsque le type réel d’un opérande ne correspond pas au type prévu.

Une exception TypeError peut être renvoyée dans les cas suivants :

  • Un paramètre réel de fonction ou de méthode ne peut pas être forcé à correspondre au type de paramètre formel.

  • Une valeur est affectée à une variable et ne peut pas être forcée à correspondre au type de la variable.

  • Le côté droit de l’opérateur is ou instanceof n’est pas un type valide.

  • L’utilisation du mot clé super n’est pas valide.

  • Une recherche de propriété donne lieu à plusieurs liaisons, soit un résultat ambigu.

  • Une méthode est appelée pour un objet incompatible. Par exemple, une exception TypeError est renvoyée si une méthode de la classe RegExp est « greffée » sur un objet générique, puis appelée.

URIError

L’exception URIError est renvoyée lorsque l’une des fonctions de gestion URI globales est utilisée d’une manière qui n’est pas compatible avec sa définition.

Une exception URIError peut être renvoyée dans les cas suivants :

Un URI non valide est défini par une fonction API de Flash Player qui s’attend à un URI valide, comme Socket.connect().

VerifyError

Une erreur VerifyError est renvoyée lorsqu’un fichier SWF incorrect ou altéré est détecté.

Lorsqu’un fichier SWF charge un autre fichier SWF, le fichier SWF parent peut intercepter une exception VerifyError générée par le fichier SWF chargé.

Classes Error du package flash.error

Le package flash.error contient des classes Error considérées comme parties intégrantes de l’API des moteurs d’exécution de Flash. A l’encontre des classes Error décrites, le package flash.error communique les événements d’erreurs propres aux moteurs d’exécution de Flash (tel Flash Player ou Adobe AIR).

Nom de classe

Description

Remarques

EOFError

Une exception EOFError est émise lors d’une tentative de lecture au-delà de la fin des données disponibles.

Par exemple, une exception EOFError est émise chaque fois qu’une méthode de lecture de l’interface IDataInput est appelée et que les données sont insuffisantes pour répondre à la requête de lecture.

IllegalOperationError

Une exception IllegalOperationError est renvoyée lorsqu’une méthode n’est pas implémentée ou si l’implémentation ne couvre pas l’utilisation actuelle.

Voici quelques exemples d’exceptions d’erreurs liées à des opérations non valides :

  • Une classe de base, telle que DisplayObjectContainer, propose plus de fonctionnalités qu’une scène ne peut prendre en charge. Par exemple, si vous tentez d’obtenir ou de définir un masque sur la scène (à l’aide de stage.mask), le moteur d’exécution de Flash renvoie une exception IllegalOperationError accompagnée du message « La classe Stage n’implémente ni cette propriété, ni cette méthode ».

  • Une sous-classe hérite d’une méthode dont elle n’a pas besoin et qu’elle ne souhaite pas prendre en charge.

  • Certaines méthodes d’accessibilité sont appelées lorsque Flash Player est compilé sans les fonctions d’accessibilité.

  • Les fonctions réservées à la création sont appelées à partir d’une version d’exécution de Flash Player.

  • Vous tentez de définir le nom d’un objet placé sur le scénario.

IOError

Une exception IOError est renvoyée lorsqu’un type d’exception E/S se produit.

Vous obtenez cette erreur, par exemple, lorsque vous tentez une opération de lecture-écriture sur un socket qui n’est pas connecté ou qui est déconnecté.

MemoryError

Une exception MemoryError est renvoyée lors de l’échec d’une requête d’allocation de mémoire.

Par défaut, ActionScript Virtual Machine 2 n’impose pas de limite à la quantité de mémoire allouée par un programme ActionScript. Sur un système de bureau, les échecs d’allocation de mémoire sont rares. Une erreur est renvoyée lorsque le système ne parvient pas à allouer la mémoire requise pour une opération. Par conséquent, sur un système de bureau, cette exception est peu fréquente, à moins qu’une requête d’allocation ne soit extrêmement importante (par exemple, une requête de 3 milliards d’octets est impossible, car un programme Microsoft® Windows® de 32 bits peut accéder à 2 Go d’espace d’adressage uniquement).

ScriptTimeoutError

Une exception ScriptTimeoutError est renvoyée lorsqu’un intervalle de délai d’expiration du script de 15 secondes est atteint. En interceptant une exception ScriptTimeoutError, vous pouvez gérer le délai d’expiration du script plus en douceur. Si aucun gestionnaire d’exception n’est défini, le gestionnaire de l’exception non interceptée affiche une boîte de dialogue contenant un message d’erreur.

Pour éviter qu’un développeur n’intercepte l’exception et reste dans une boucle sans fin, seule la première exception ScriptTimeoutError renvoyée au cours d’un script donné peut être interceptée. Le code ne peut pas intercepter une exception ScriptTimeoutError ultérieure. Elle passe donc immédiatement au gestionnaire de l’exception non interceptée.

StackOverflowError

L’exception StackOverflowError est renvoyée lorsque la pile disponible pour le script a été épuisée.

Une exception StackOverflowError peut indiquer qu’un problème de récursivité à l’infini s’est produit.