La gestion des erreurs est un aspect crucial de tout développement de logiciel. En Node.js, les erreurs sont gérées principalement par le biais de callbacks, de promesses, et à l’aide de try-catch pour les erreurs de synchronisation. Voici les points généraux sur lesquels vous devez vous concentrer lors de la gestion des erreurs dans Node.js.
1. Callbacks : Dans le code basé sur des callbacks, la convention est que le premier argument d’un callback est une erreur, s’il y en a une. Si quelque chose se passe mal (une erreur est produite), le callback est appelé avec un objet d’erreur. Sinon, le callback est appelé avec le premier paramètre null (ou undefined) et les données suivantes.
Exemple : \`\`\` fs.readFile(‘foo.txt’, function(err, data) { if (err) { console.error(‘There was an error reading the file!’, err); return; } console.log(data); }); \`\`\`1. Promesses : Les promesses ont une méthode intégrée appelée `.catch`, qui est appelée lorsque quelque chose ne va pas. Le bloc `.catch` reçoit l’objet d’erreur généré et peut gérer l’erreur.
Exemple : \`\`\` doSomething() .then(result => doSomethingElse(result)) .then(newResult => doAnotherThing(newResult)) .then(finalResult => console.log(`Got the final result: ${finalResult}`)) .catch(failureCallback); \`\`\`1. Try…Catch : Node.js prend également en charge la déclaration traditionnelle try-catch pour la capture d’erreurs, mais cela ne fonctionne que pour les erreurs synchrones.
Exemple : \`\`\` try { const m = 1; const n = m + z; } catch (err) { console.error(`This didn’t work: ${err}`); } \`\`\`1. Middleware d’erreur : expressJS, un framework populaire de node.js offre une fonctionnalité spéciale pour gérer les erreurs via des fonctions middleware.
Exemple : \`\`\` app.use(function (err, req, res, next) { console.error(err.stack) res.status(500).send(‘Something broke!’) }) \`\`\` 1. Évitez de supprimer le processus sur les erreurs non gérées : Node.js ferme automatiquement le processus sur une erreur non interceptée, ce qui peut causer l’arrêt de votre application entière. Pour éviter cela, vous pouvez écouter l’événement `unhandledRejection`. Exemple : \`\`\` process.on(‘unhandledRejection’, (reason, p) => { console.error(‘Unhandled Rejection at:’, p, ‘reason:’, reason); }); \`\`\`N’oubliez pas que la gestion appropriée des erreurs rend votre application plus fiable et facile à déboguer.