Vous êtes sur la page 1sur 3

Les erreurs : origine et pourquoi les traiter

Une « erreur » se traduit par un comportement inattendu et non voulu du script.


Les erreurs peuvent avoir différentes origines :
• Elles peuvent provenir du développeur dans le cas d’erreur de syntaxe dans le code
même ;
• Elles peuvent provenir du serveur dans le cas où celui-ci est dans l’incapacité de
fournir les ressources (fichiers) demandés ;
• Elles peuvent provenir du navigateur ;
• Elles peuvent encore être créées par un utilisateur qui envoie une valeur non valide par
exemple.
En effet, laisser une erreur dans la nature peut avoir de graves conséquences pour un site : dans
le meilleur des cas, l’erreur n’est pas grave et sera ignorée. Dans la majorité des cas,
cependant, une erreur va provoquer l’arrêt brutal d’un script et on risque donc d’avoir des
codes et des pages non fonctionnelles. Dans le pire des cas, une erreur peut être utilisée comme
faille de sécurité par des utilisateurs malveillants qui vont l’utiliser pour dérober des
informations ou pour tromper les autres visiteur
Dans cette partie, nous allons nous concentrer sur la prise en charge des cas d’erreurs sur
lesquels on n’a pas de contrôle direct, c’est-à-dire sur les erreurs générées par le serveur, le
navigateur, ou l’utilisateur.

Gérer une erreur avec les blocs try…catch


lorsqu’une erreur d’exécution survient le JavaScript crée automatiquement un objet à partir de
l’objet global Error qui est l’objet de base pour les erreurs en JavaScript.

/*Décommentez le code pour qu'il s'exécute


try{
alert('Bonjour');
}catch(err){
alert('Une erreur a été rencontrée');
}

nous allons placer le code à tester (qui peut potentiellement générer une erreur) au sein de notre
bloc try puis allons capturer l’erreur potentielle dans le bloc catch et indiquer comment la
gérer.
Si aucune erreur n’est rencontrée la boite d’alerte s’affichera bien avec son message et le
bloc catch sera ignoré.
prenom;
alert('Ce message ne s\'affichera pas);

Ici, on essaie d’exécuter notre script sans blocs try et catch. Le JavaScript rencontre une erreur
durant l’exécution, renvoie un objet Error et stoppe l’exécution du script. On peut obtenir des
informations sur l’erreur en ouvrant la console de notre navigateur.
Testons maintenant avec la syntaxe try…catch
/*Décommentez le code pour l'exécuter
try{
prenom
alert('Bonjour');
}catch(err){
alert('Erreur rencontrée. ' +
'\nNom de l\'erreur : ' + err.name +
'\nMessage d\'erreur : ' + err.message +
'\nEmplacement de l\'erreur : ' + err.stack);
}
alert('Ce message s\'affiche correctement');

*/

on passe un argument err à catch. Celui-ci représente l’objet erreur créé par le JavaScript
lorsque l’erreur survient et qu’on va « capturer » (catch) pour en utiliser les propriétés.
le constructeur Error possède des propriétés standards qqui vont nous donner des informations sur
l’erreur comme la propriété message qui contient le message de l’erreur ou name qui contient
le nom de l’erreur.
en plus du constructeur générique Error il existe 7 autres constructeurs d’erreurs de base le
DOM nous fournit également une interface de gestion d’erreurs liées à celui-ci : l’interface
DOMException

Les exceptions en JavaScript et l’instruction throw


Dans le cas où un utilisateur tente de diviser par zéro, une erreur va donc être provoquée. On va
pouvoir prendre en charge ce cas précis en amont en lançant (throw) ce qu’on appelle une exception
si celui-ci survient.
une exception est une erreur qu’on va déclencher à la place du JavaScript afin de pouvoir plus
facilement la gérer.
Pour définir une exception, nous allons créer un objet à partir de l’un des constructeurs
d’erreurs prédéfinis en JavaScript en utilisant la syntaxe new.

a défaut le constructeur générique Error sera utilise


/*Décommentez le code pour l'exécuter
function div(){
let x = prompt('Entrez un premier nombre (numérateur)');
let y = prompt('Entrez un deuxième nombre (dénominateur)');

if(isNaN(x) || isNaN(y) || x == '' || y == ''){


throw new Error('Merci de rentrer deux nombres');
}else if(y == 0){
throw new Error('Division par 0 impossible')
}else{
alert(x / y);
}
}

try{
div();
}catch(err){
alert(err.message);
}

*/
Attention : dès qu’on lance une exception, il faut absolument la capturer dans un bloc catch à
un endroit dans le script.
De pref fi 3oudh mathot code fi wost try catch asna3 error w mba3d a3ml try catch : formelle
akther

Le bloc finally
Le bloc finally est un bloc optionnel qui doit être placé juste après un try…catch.

Ce bloc nous permet de préciser du code qui sera exécuté dans tous les cas
les instructions dans un bloc finally s’exécuteront même dans le cas où une exception est
levée mais n’est pas attrapée
si on utilise finally pour retourner une valeur, la valeur retournée sera considérée comme la
valeur de retour pour l’ensemble des blocs try, catch et finally et ceci même si les deux
premiers blocs possèdent des instructions return

function div(){
let x = prompt('Entrez un premier nombre (numérateur)');
let y = prompt('Entrez un deuxième nombre (dénominateur)');

if(isNaN(x) || isNaN(y) || x == '' || y == ''){


throw new Error('Merci de rentrer deux nombres');
}else if(y == 0){
throw new Error('Division par 0 impossible')
}else{
alert(x / y);
}
}

try{
div();
}catch(err){
alert(err.message);
}finally{
alert('Ce message s\'affichera quoiqu\'il arrive'); }

Vous aimerez peut-être aussi