Package | flash.events |
Classe | public class UncaughtErrorEvent |
Héritage | UncaughtErrorEvent ErrorEvent TextEvent Event Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10.1, AIR 2 |
try.. catch
ou lorsqu’un objet ErrorEvent est distribué avec aucun écouteur enregistré. La fonctionnalité d’événement d’erreur non interceptée est souvent décrite comme un « gestionnaire d’erreur global ».
L’objet UncaughtErrorEvents qui distribue l’événement est associé à un objet LoaderInfo ou à un objet Loader. Utilisez les propriétés suivantes pour accéder à une occurrence de UncaughtErrorEvents :
-
LoaderInfo.uncaughtErrorEvents
: pour détecter des erreurs non interceptées dans le code défini dans le même fichier SWF. -
Loader.uncaughtErrorEvents
: pour détecter des erreurs non interceptées dans le code défini dans le fichier SWF chargé par un objet Loader.
Lorsqu’un événement uncaughtError
se produit, même si l’événement est géré, l’exécution ne se poursuit pas dans la pile d’appels à l’origine de l’erreur. Si l’erreur est une erreur synchrone, tout code restant dans la fonction dans laquelle l’erreur est survenue n’est pas exécuté. Par conséquent, il est probable que votre application se trouve dans un état instable lorsqu’une erreur non interceptée se produit. Les causes d’une erreur non interceptée peuvent être multiples ; il est donc impossible de prévoir quelle fonctionnalité est disponible. Par exemple, votre application peut être en mesure d’exécuter des opérations réseau ou des opérations de fichiers. Toutefois, ces opérations ne sont pas nécessairement disponibles.
Lorsqu’un fichier SWF en charge un autre, les événements uncaughtError
se propagent vers le bas, puis à nouveau vers le haut dans la hiérarchie de LoaderInfo. Par exemple, supposons que A.swf charge B.swf à l’aide d’une occurrence de Loader. Si une erreur non interceptée se produit dans B.swf, un événement uncaughtError
est distribué aux objets LoaderInfo et Loader dans l’ordre suivant :
- (Phase de capture) LoaderInfo de A.swf
- (Phase de capture) Loader dans A.swf
- (Phase cible) LoaderInfo de B.swf
- (Phase de propagation) Loader dans A.swf
- (Phase de propagation) LoaderInfo de A.swf
La propriété uncaughtErrorEvents
d’un objet Loader ne distribue jamais d’événement uncaughtErrorEvent
dans la phase cible. Elle distribue l’événement uniquement dans les phases de capture et de propagation.
Comme pour la propagation d’autres événements, l’appel de stopPropagation()
ou de stopImmediatePropagation()
met fin à la distribution de l’événement à tout autre écouteur, avec une différence significative. L’objet UncaughtErrorEvents d’un objet Loader est considéré comme paire de l’objet LoaderInfo.uncaughtErrorEvents
du fichier SWF chargé à des fins de propagation de l’événement. Si un écouteur enregistré avec l’un de ces objets appelle la méthode stopPropagation()
, les événements sont toujours distribués aux autres écouteurs enregistrés avec cet objet UncaughtErrorEvents et aux écouteurs enregistrés avec son objet UncaughtErrorEvents partenaire avant la fin de la propagation de l’événement. La méthode stopImmediatePropagation()
évite toujours la distribution des événements à tous les autres écouteurs.
Si le contenu est exécuté dans une version de débogage du moteur d’exécution, telle que la version de débogage de Flash Player ou l’application de débogage du lanceur AIR (ADL), un message d’erreur s’affiche lorsqu’une erreur non interceptée se produit. Dans ces versions du moteur d’exécution, le message d’erreur s’affiche même lorsqu’un écouteur est enregistré pour l’événement uncaughtError
. Pour empêcher l’affichage de ce message dans ce cas, appelez la méthode preventDefault()
de l’objet UncaughtErrorEvent.
Si le contenu chargé par un objet Loader est un fichier SWF AVM1 (ActionScript 2), les erreurs non interceptées dans le fichier SWF AVM1 n’entraînent pas un événement uncaughtError
. En outre, les erreurs JavaScript d’un contenu HTML chargé dans un objet HTMLLoader (notamment une commande HTML Flex) n’entraînent pas un événement uncaughtError
.
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
bubbles : Boolean [lecture seule]
Indique si un événement peut se propager vers le haut (bubbling). | Event | ||
cancelable : Boolean [lecture seule]
Indique si le comportement associé à l’événement peut être évité. | Event | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
currentTarget : Object [lecture seule]
L’objet qui traite activement l’objet Event avec un écouteur d’événements. | Event | ||
error : * [lecture seule]
Objet Error associé à l’erreur non interceptée. | UncaughtErrorEvent | ||
errorID : int [lecture seule]
Contient le numéro de référence associé à l’erreur spécifique. | ErrorEvent | ||
eventPhase : uint [lecture seule]
Phase actuelle du flux d’événements. | Event | ||
target : Object [lecture seule]
Cible de l’événement. | Event | ||
text : String
Dans le cas d’un événement textInput, caractère ou suite de caractères entré par l’utilisateur. | TextEvent | ||
type : String [lecture seule]
Type d’événement. | Event |
Méthode | Défini par | ||
---|---|---|---|
UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Crée un objet UncaughtErrorEvent qui contient des informations sur un événement uncaughtError. | UncaughtErrorEvent | ||
[override]
Crée une copie de l’objet UncaughtErrorEvent et définit la valeur de chaque propriété de sorte qu’elle corresponde à la valeur d’origine. | UncaughtErrorEvent | ||
Fonction d’un utilitaire permettant d’implémenter la méthode toString() dans des classes Event ActionScript 3.0 personnalisées. | Event | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Vérifie si la méthode preventDefault() a été appelée pour l’événement. | Event | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Annule le comportement par défaut d’un événement si cette opération est possible. | Event | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Bloque le traitement des écouteurs d’événement dans le nœud actuel et les suivants dans le flux d’événements. | Event | ||
Bloque le traitement des écouteurs d’événement dans les nœuds qui suivent le nœud actuel dans le flux d’événements. | Event | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
[override]
Renvoie une chaîne répertoriant toutes les propriétés de l’objet UncaughtErrorEvent. | UncaughtErrorEvent | ||
Renvoie la valeur primitive de l’objet spécifié. | Object |
Constante | Défini par | ||
---|---|---|---|
UNCAUGHT_ERROR : String = "uncaughtError" [statique]
Définit la valeur de la propriété type d’un objet d’événement UncaughtError. | UncaughtErrorEvent |
error | propriété |
error:*
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10.1, AIR 2 |
Objet Error associé à l’erreur non interceptée. En règle générale, le type de données de cet objet est l’un des suivants :
- Une occurrence d’Error (ou l’une de ses sous-classes) si l’erreur non interceptée est une erreur synchrone créée par une instruction
throw
, notamment une erreur pouvant avoir été interceptée à l’aide d’un bloctry..catch
. - Une occurrence d’ErrorEvent (ou l’une de ses sous-classes) si l’erreur non interceptée est une erreur asynchrone qui distribue un événement d’erreur lorsque l’erreur se produit.
Toutefois, la propriété error
peut être un objet de tout type de données. ActionScript ne nécessite pas d’instruction throw
pour être utilisé uniquement avec des objets Error. Par exemple, le code suivant est autorisé au moment de la compilation et au moment de l’exécution :
throw new Sprite()
Si cette instruction throw
n’est pas interceptée par un bloc try..catch
, l’instruction throw
déclenche un événement uncaughtError
. Dans ce cas, la propriété error
de l’objet UncaughtErrorEvent qui est distribué correspond à l’objet Sprite construit dans l’instruction throw
Vous devez donc vérifier dans votre écouteur d’événement uncaughtError
le type de données de la propriété error
. L’exemple suivant décrit cette vérification :
function uncaughtErrorHandler(event:UncaughtErrorEvent):void { var message:String; if (event.error is Error) { message = Error(event.error).message; } else if (event.error is ErrorEvent) { message = ErrorEvent(event.error).text; } else { message = event.error.toString(); } }
Si la propriété error
contient une occurrence (ou une sous-classe) de Error, les informations d’erreur disponibles varient en fonction de la version du moteur d’exécution dans lequel s’exécute le contenu, comme suit :
Dans une version de débogage du moteur d’exécution, par exemple la version de débogage de Flash Player ou l’application de débogage du lanceur AIR (ADL) :
- La méthode
Error.getStackTrace()
renvoie la pile d’appels qui a conduit à l’erreur. - Le message
Error.message
contient le texte complet du message d’erreur.
- La méthode
Dans les versions du moteur d’exécution qui ne sont pas des versions de débogage :
- La méthode
Error.getStackTrace()
renvoie la pile d’appels qui a conduit à l’erreur. Toutefois, les informations de la pile d’appels n’incluent pas les noms de fichier sources ou les numéros de ligne. - La propriété
Error.message
contient une version abrégée de ce message d’erreur, qui est souvent une combinaison des propriétésError.errorID
etError.name
.
- La méthode
Dans les versions du moteur d’exécution qui ne sont pas des versions de débogage (Flash Player 11.4 ou une version antérieure et AIR 1.4 ou une version antérieure) :
- La méthode
Error.getStackTrace()
renvoienull
- La propriété
Error.message
contient une version abrégée de ce message d’erreur, qui est souvent une combinaison des propriétésError.errorID
etError.name
.
- La méthode
Toutes les autres propriétés et méthodes de la classe Error sont disponibles dans toutes les versions du moteur d’exécution.
Notez que si la propriété error
est une occurrence de ErrorEvent, les informations de la pile d’appels ne sont jamais disponibles.
Implémentation
public function get error():*
UncaughtErrorEvent | () | Constructeur |
public function UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10.1, AIR 2 |
Crée un objet UncaughtErrorEvent qui contient des informations sur un événement uncaughtError
.
type:String (default = NaN ) — Type d’événement.
| |
bubbles:Boolean (default = true ) — Détermine si l’objet Event prend part à la phase de propagation du flux d’événements. Les écouteurs d’événement peuvent accéder à cette information par le biais de la propriété bubbles héritée.
| |
cancelable:Boolean (default = true ) — Détermine si l’objet Event peut être annulé. Les écouteurs d’événement peuvent accéder à cette information par le biais de la propriété cancelable héritée.
| |
error_in:* (default = null ) — Objet associé à l’erreur qui n’a pas été interceptée ou gérée (objet Error ou ErrorEvent dans des circonstances normales).
|
clone | () | méthode |
override public function clone():Event
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10.1, AIR 2 |
Crée une copie de l’objet UncaughtErrorEvent et définit la valeur de chaque propriété de sorte qu’elle corresponde à la valeur d’origine.
Valeur renvoyéeEvent — Nouvel objet UncaughtErrorEvent dont les propriétés ont la même valeur que celles de l’objet d’origine.
|
toString | () | méthode |
override public function toString():String
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10.1, AIR 2 |
Renvoie une chaîne répertoriant toutes les propriétés de l’objet UncaughtErrorEvent.
Valeur renvoyéeString — Chaîne répertoriant toutes les propriétés de l’objet UncaughtErrorEvent.
|
UNCAUGHT_ERROR | Constante |
public static const UNCAUGHT_ERROR:String = "uncaughtError"
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10.1, AIR 2 |
Définit la valeur de la propriété type
d’un objet d’événement UncaughtError
.
Remarque : si dans un bloc try, un diffuseur d’événements appelle son gestionnaire d’événements, le bloc catch n’intercepte pas l’erreur si elle est renvoyée dans le gestionnaire d’événements. Toute erreur renvoyée peut être interceptée en écoutant LoaderInfo.uncaughtErrorEvents
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | true |
cancelable | true ; l’annulation de l’événement empêche le message d’erreur non interceptée de s’afficher dans les versions de débogage du moteur d’exécution |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
error | L’erreur non interceptée. |
target | Objet LoaderInfo associé au fichier SWF dans lequel l’erreur s’est produite. |
text | Texte du message d’erreur. |
uncaughtError
pour détecter les erreurs non interceptées. Il fournit également un bouton qui, lorsque l’utilisateur clique dessus, renvoie une erreur qui est ensuite interceptée par le gestionnaire d’événement uncaughtError.
Dans le constructeur, le code enregistre un écouteur pour l’événement uncaughtError
distribué par la propriété uncaughtErrorEvents
de l’objet LoaderInfo.
Dans la méthode uncaughtErrorHandler()
, le code vérifie le type de données de la propriété error
et répond en conséquence.
package { import flash.display.Sprite; import flash.events.ErrorEvent; import flash.events.MouseEvent; import flash.events.UncaughtErrorEvent; public class UncaughtErrorEventExample extends Sprite { public function UncaughtErrorEventExample() { loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); drawUI(); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } private function drawUI():void { var btn:Sprite = new Sprite(); btn.graphics.clear(); btn.graphics.beginFill(0xFFCC00); btn.graphics.drawRect(0, 0, 100, 50); btn.graphics.endFill(); addChild(btn); btn.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { throw new Error("Gak!"); } } }
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" applicationComplete="applicationCompleteHandler();"> <fx:Script> <![CDATA[ import flash.events.ErrorEvent; import flash.events.MouseEvent; import flash.events.UncaughtErrorEvent; private function applicationCompleteHandler():void { loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } private function clickHandler(event:MouseEvent):void { throw new Error("Gak!"); } ]]> </fx:Script> <s:Button label="Cause Error" click="clickHandler(event);"/> </s:WindowedApplication>
uncaughtError
pour détecter les erreurs non interceptées.
Dans le constructeur, le code crée un objet Loader et enregistre un écouteur pour l’événement uncaughtError
distribué par la propriété uncaughtErrorEvents
de l’objet Loader.
Dans la méthode uncaughtErrorHandler()
, le code vérifie le type de données de la propriété error
et répond en conséquence.
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.ErrorEvent; import flash.events.UncaughtErrorEvent; import flash.net.URLRequest; public class LoaderUncaughtErrorEventExample extends Sprite { private var ldr:Loader; public function LoaderUncaughtErrorEventExample() { ldr = new Loader(); ldr.load(new URLRequest("child.swf")); ldr.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } } }
Tue Jun 12 2018, 09:30 AM Z