Mini-JS

Mini-JS c_try...catch...finally

try…catch…finally

Le bloc try...catch permet déjà d’intercepter des erreurs et d’éviter que le programme ne s’arrête brutalement. Mais il existe un mécanisme supplémentaire qui renforce encore cette logique : le mot-clé finally.

Un bloc finally contient du code qui sera exécuté dans tous les cas : que le code du try réussisse sans problème ou qu’il échoue et passe dans le catch. Cela permet, par exemple, d’assurer la libération de ressources, la fermeture d’une connexion ou l’affichage d’un message final, peu importe le scénario.

Voici la syntaxe générale :

try {
  // Code à exécuter
} catch (err) {
  // Gestion des erreurs
} finally {
  // Code toujours exécuté
}

Prenons un petit exemple :

try {
  alert("Bloc try exécuté");
} catch (err) {
  alert("Bloc catch exécuté");
} finally {
  alert("Bloc finally exécuté");
}

Dans ce cas précis, aucun problème ne survient dans le try, donc catch est ignoré. Mais le finally est tout de même exécuté, garantissant que certaines actions se déroulent toujours.


Exemple pratique

Le finally prend tout son sens lorsqu’il s’agit d’assurer un nettoyage ou une étape de conclusion.

function divideNumbers(a, b) {
  try {
    if (b === 0) {
      throw new Error("Impossible de diviser par zéro");
    }
    return a / b;
  } catch (error) {
    console.error("Une erreur est survenue :", error.message);
  } finally {
    console.log("Fin de l’exécution de la fonction");
  }
}

let result = divideNumbers(10, 2);  // Affiche : 5 puis "Fin de l’exécution de la fonction"
let result2 = divideNumbers(10, 0); // Affiche : "Une erreur est survenue : Impossible de diviser par zéro" puis "Fin de l’exécution de la fonction"

Dans les deux cas, le message « Fin de l’exécution de la fonction » s’affiche, preuve que le bloc finally est inévitablement exécuté, qu’il y ait eu une erreur ou non.


À retenir

Le bloc try...catch...finally offre un outil puissant pour combiner la gestion des erreurs et l’exécution garantie d’un code de conclusion.

C’est le moyen le plus sûr de garantir que certaines actions, comme la fermeture d’un fichier ou la libération d’une ressource, se produisent dans tous les cas.


⬅️ Chapitre précédent : try…catch

➡️ Chapitre suivant : La gestion des erreurs asynchrones