Qu'est-ce que try-catch en Node.js
Quel est la place de try-catch dans la manière de gérer les erreurs en Node.js ? Une traduction de l'article What is try-catch?
Classé dans Erreurs
Traduction
Code
console.log("début de la structure de contrôle try-catch");
try {
console.log("entrée dans le bloc d'essai");
throw "lancer un message";
console.log("ce message ne sera jamais atteint");
}
catch (e) {
console.log("entrée dans le bloc de capture");
console.log(e);
console.log("sortie du bloc de capture");
}
finally {
console.log("entrée dans le block final");
}
console.log("fin de la structure de contrôle try-catch");
Résultat
début de la structure de contrôle try-catch
entrée dans le bloc d'essai
entrée dans le bloc de capture
lancer un message
sortie du bloc de capture
entrée dans le block final
fin de la structure de contrôle try-catch
L'instruction try-catch-finally de JavaScript fonctionne de manière très similaire aux try-catch-finally rencontrés en C++ et Java. Tout d'abord, le bloc d'essai (try) est exécuté jusqu'à ce que le code qu'il contient lève une exception (qu'il s'agisse d'une instruction throw explicite, que le code comporte une exception native non capturée ou que le code appelle une fonction qui utilise throw).
Si le code ne lève pas d'exception, l'ensemble du bloc d'essai est exécuté. Si le code lève une exception à l'intérieur du bloc d'essai, alors le reste est ignoré et le bloc de capture (catch) est exécuté. Enfin, le bloc final (finally) est toujours exécuté, après les autres blocs mais avant tout autre code situé en dehors des blocs try-catch-finally. Le bloc final s'exécutera presque toujours, quel que soit le type de lancer, de capture ou de retour que l'on peut essayer de faire à l'intérieur des blocs d'essai ou de capture.
Notez que vous pouvez omettre le bloc de capture ou le bloc final, mais l'un des deux doit être présent.
Mais attendez, n'est-ce pas la convention Node.js de ne pas utiliser try-catch ?
Dans les bibliothèques de base de Node.js, le seul endroit où il faut vraiment utiliser un try-catch est autour de JSON.parse(). Toutes les autres méthodes utilisent soit l'objet Error standard via le premier paramètre de la fonction de rappel (callback function), soit émettent un événement d'erreur. Pour cette raison, il est généralement considéré comme standard de renvoyer les erreurs par le biais d'une fonction de rappel plutôt que d'utiliser l'instruction throw.