Gestion des erreurs

Gestion des erreurs

24 January 2022

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.