Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

23sept/082

Flex ActionScript – Gestion des erreurs synchrones en ActionScript 3

Les erreurs dîtes synchrones se produisent immédiatement après avoir exécuté une instruction. Vous pouvez utiliser try/catch/finally pour manipuler ces erreurs synchrones.
Quand vous avez du code qui peut lancer des erreurs à l'exécution (runtime errors), entourez le d'un bloc try:

try{
	// code pouvant lancer des erreurs
}

Vous devez ensuite inclure un ou plusieurs bloc catch suivant le try. Si le code dans le try lance une erreur, l'application va essayer de faire correspondre l'erreur aux blocs catch dans l'ordre dans lequel ils apparaissent. Chaque bloc catch doit spécifier le type d'erreur spécifique qu'il manipule. Tous les types d'erreur sont de type flash.errors.Error ou une sous-classe de Error. C'est pourquoi, vous devez toujours commencer par essayer les erreurs les plus spécifiques en premier, puis les types plus génériques:

try{
	// code pouvant lancer des erreurs
} catch (error:IOError){
	// code dans le cas d'une erreur spécifique
} catch (error:Error){
	// code dans le cas d'une erreur non-spécifique
}


De plus, vous pouvez ajouter une clause finally qui sera lancée même si le bloc try ne se passe pas bien:

try{
	// code pouvant lancer des erreurs
} catch (error:IOError){
	// code dans le cas d'une erreur spécifique
} catch (error:Error){
	// code dans le cas d'une erreur non-spécifique
} finally {
	// code lu dans tous les cas
}

La plupart des classes Flash Player et celles du framework Flex utilisent des erreurs asynchrones plutôt que des erreurs synchrones, mais cet exemple illustre la syntaxe pour l'utilisation de try/catch. La méthode browse() d'un objet FileReference ouvre une fenêtre qui permet à l'utilisateur de choisir un fichier sur son disque. Cependant, Flash Player ne peut pas afficher plus d'une de ces fenêtres à la fois. Si vous appelez browse() alors qu'une fenêtre est déjà ouverte, il va lancer une erreur de type flash.errors.IOError. Si vous ne gérez pas cette erreur, l'utilisateur recevra une notification dans une fenêtre par défaut:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initializeHandler(event)">
	<mx:Script>
		<![CDATA[
			import flash.net.FileReference;

			private function initializeHandler(event:Event):void{
				var file:FileReference = new FileReference();
				file.browse();
				file.browse();
			}
		]]>
	</mx:Script>
</mx:Application>

Le code suivant est écrit pour traiter l'erreur:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initializeHandler(event)">
	<mx:Script>
		<![CDATA[
			import flash.net.FileReference;

			private function initializeHandler(event:Event):void{
				var file:FileReference = new FileReference();
				try {
					file.browse();
					file.browse();
				} catch (error:Error){
					errors.text += error + "\n";
				}
			}
		]]>
	</mx:Script>

	<mx:TextArea id="errors" width="400" height="100"/>

</mx:Application>

Articles similaires

Commentaires (2) Trackbacks (0)
  1. SVP aidez moi a retrouver la solution de cet erreur.

    [mxml]

    [mxml]
    Severity and Description Path Resource Location Creation Time Id
    The prefix "mx" for element "mx:Application" is not bound. projet/src projet.mxml line 2 1269435533736 171

  2. Salut, le code mxml n'est pas passé (tu as oublié de ferme la balise mxml] mais l'erreur vient du fait que tu n'a pas déclaré le namespace mx: dans ton application comme ceci:
    mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

    ….

    Fabien


Leave a comment

(required)

Aucun trackbacks pour l'instant