Gestion des erreurs
En développement, vous flirterez régulièrement avec les erreurs. Qu'elles soient créées par le développeur, le navigateur, le serveur ou même les visiteurs en nous fournissant des données invalides. Le but est d'éviter au maximum toutes ces erreurs et de gérer celles dont nous n'avons aucun contrôle.
try...catch
Cette syntaxe est intéressante pour capter une erreur d'exécution dans notre code et de la traiter comme il faut.
try {
/* Code à exécuter et résultat à retourner */
} catch(error) {
/* Gestion des erreurs */
}
Le premier bloc try
contiendra le code à exécuté, si jamais il n'y a aucune erreur, alors le programme ignorera le bloc catch
et continuera l'exécution de votre programme. Par contre, si jamais une erreur survient pendant l'exécution du code dans le bloc try
, alors celle-ci sera interceptée par le bloc catch
et contenue dans la variable error
(dont le nom est libre bien entendu) que vous pourrez ensuite gérer.
Cette syntaxe ne fonctionne qu'avec du code JavaScript valide et de manière synchrone, c'est-à-dire que toutes erreurs de syntaxe ne sera pas traitées par celle-ci ou toutes erreurs gérées par un
setTimeout()
ne sera pas attrapées.
À partir de cet instant, une fois l'erreur levée, vous en faites ce que vous voulez. Vous pouvez la passer dans des conditions, l'affichée directement...
throw
L'instruction throw
vous permet de créer une exception. Votre exception peut être une chaîne de caractère, un booléen, un nombre...
let age = 25;
if (age < 20) {
/* Code à traiter */
}
else {
throw("L'âge n'est pas correcte");
}
La meilleure façon de l'utiliser est de coupler throw
avec un try...catch
de façon à attraper l'erreur et de la gérer plus proprement.
function isAge(age) {
if (age < 20) {
/* Code à traiter */
}
else {
throw new Error("L'âge n'est pas correcte");
}
}
try {
let age = 25;
isAge(age);
} catch(error) {
console.error(error.message);
}
finally
finally
s'utilise avec le bloc try
avec ou sans le catch
. Cette instruction permet d'exécuter du code même si une exception est levée. Elle est optionnelle et se place toujours en dernière position.
try {
/* Code à traiter */
}
finally {
/* Code à traiter même si une exeption est levée */
}
try {
/* Code à traiter */
}
catch(error) {
/* Exception à gérer */
}
finally {
/* Code à traiter même si une exeption est levée */
}
Cette dernière peut servir pour vider un élément du DOM, une variable ou tout autre partie qui doit être exécuté peu importe qu'une erreur surgisse lors du traitement de votre code.