SELFHTML

Traitement d'erreur avec le gestionnaire d'événement onError

Page d'information: vue d'ensemble

vers le bas Remarques sur cet exemple
vers le bas Texte source avec explications

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu

 vers le bas 

Remarques sur cet exemple

L'étendue du langage JavaScript permet entre-temps la création d'applications au champ large. Les pages Web dynamiques contiennent, pour certaines, des scripts au large champ d'action qui accèdent à quantité de variables dans leur déroulement. C'est ainsi que des valeurs ou des états incontrôlés peuvent s'y glisser facilement lors du déroulement du programme, par exemple à cause d'une conduite imprévue de l'utilisateur. Depuis la version JavaScript 1.1, vous avez avec le gestionnaire d'événement onError un outil à votre disposition pour intercepter les erreurs dans le script et y réagir de façon ciblée.

Pour empêcher les messages d'erreurs qui se créent dans l'exécution d'un script, notez dans l'entête du fichier window.onerror=. Comme valeur, affectez le nom d'une fonction qui exécute le traitement de l'erreur. La valeur retournée par la fonction doit être true. Ainsi, vous avez votre propre traitement d'erreur

Vous pouvez transmettre jusqu'à trois paramètres facultatifs à la fonction de traitement de l'erreur:
1. nouvelle: contient la description de l'erreur
2. fichier: contient l'URI du fichier occasionnant l'erreur
3. ligne: contient la ligne dans laquelle l'erreur survient

Cette façon de contrôler l'erreur peut être utilisée avec Netscape 4.x et l'Explorer Internet MS à partir de la version 4.x. Netscape 6 n'est malheureusement pas en mesure d'interpréter complètement les paramètres. Il sauvegarde à chaque fois dans le premier paramètre l'objet Event déclencheur. Opera 5.12 n'interprète pas le gestionnaire d'événement window.onError lié à l'objet fenêtre.

Tenez compte que vous ne pouvez surveiller et empêcher que des erreurs logiques, qui apparaissent lors du déroulement du script. Les fautes de syntaxe, comme par exemple des guillemets manquants, ne peuvent être interceptées.

 vers le hautvers le bas 

DOM 1.0JavaScript 1.1Netscape 3.0MS IE 4.0 Texte source avec explications

L'exemple montre une variante simple de traitement de l'erreur. À la fin du bloc JavaScript est appelée une fonction qui n'existe pas.

Exemple:

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu

<html><head><title>Test</title>
<script type="text/javascript">
<!--
window.onerror = mon_erreur;

function mon_erreur(nouvelle,fichier,ligne)
{
 erreur = "Message d'erreur:\n"+ nouvelle+"\n"+fichier+"\n"+ligne;
 affiche_erreur();
 return true;
}

function affiche_erreur()
{
 alert(window.erreur)
}
absente();

//-->
</script>
</head><body>
<a href="javascript:affiche_erreur()">erreur</a><br>
</body></html>

Explication:

À la lecture du fichier, l'instruction est donnée avec window.onerror = mon_erreur, qu'en cas d'erreur, la fonction mon_erreur() soit appelée. C'est ce qui arrive dans l'exemple à la fin du passage Script, quand la tentative est faite d'appeler la fonction absente() qui n'existe pas.

La fonction mon_erreur()

La fonction sauvegarde avec l'Autre page d'information opérateur pour relier les chaînes de caractères les paramètres transmis automatiquement dans la variable erreur. Ensuite, elle appelle dans l'exemple la fonction affiche_erreur(). Cette fonction sert en fin de compte dans l'exemple à sortir l'erreur pour la démonstration. Avec return true il est obtenu que l'erreur ne soit pas affichée dans le navigateur. Avec la valeur retournée false vous obtiendriez que le navigateur signale l'erreur.

Dans une application plus complexe, la fonction mon_erreur() aurait donc toute latitude pour réagir à l'erreur. Elle pourrait par exemple rechercher dans la chaîne de caractères du paramètre transmis nouvelle pour établir quelle erreur exactement est survenue. Selon la situation, une telle fonction pourrait faire en sorte que le Script fasse un saut en arrière dans son exécution, réinitialise des variables ou place le curseur dans un certain champ du formulaire etc...

 vers le haut
page suivante Autre page d'information Traitement d'erreur avec la commande try..catch
page précédente Autre page d'information Liste de liens comme liste de choix
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org