Comment écrire des applications Node.js et gérer la tolérance aux pannes

PHPz
Libérer: 2023-04-26 09:38:38
original
568 Les gens l'ont consulté

Node.js est un langage de programmation côté serveur populaire largement utilisé pour créer différents types d'applications Web. Alors que la création d'applications Web devient de plus en plus exigeante, les applications Node.js capables de gérer la tolérance aux pannes deviennent de plus en plus populaires. Dans cet article, nous apprendrons en profondeur comment écrire des applications Node.js et gérer la tolérance aux pannes.

1. Gestion des erreurs

Peu importe la robustesse d'un programme, les erreurs sont inévitables. Si vous ne gérez pas correctement les erreurs, votre programme peut provoquer une série de problèmes, tels que des plantages du programme, un comportement hostile envers les utilisateurs, etc. Plusieurs façons de gérer les erreurs sont les suivantes :

1. Utilisez l'instruction try...catch

L'instruction try...catch est la manière standard de gérer les erreurs. Le code susceptible de provoquer des erreurs est exécuté dans le bloc de code try. Si une erreur se produit, elle sera détectée et traitée par le bloc de code catch. Voici un exemple de gestion des erreurs de lecture de fichiers :

try {
  let file = fs.readFileSync('non-existent-file.txt', 'utf8');
} catch (err) {
  console.error('Error:', err);
}
Copier après la connexion

2. Utilisation des fonctions de rappel

Dans Node.js, il est très courant d'activer les fonctions de rappel. Dans la fonction de rappel, le premier paramètre est généralement l'objet d'erreur. Si aucune erreur ne se produit, le premier paramètre sera nul. Voici un exemple d'utilisation d'une fonction de rappel pour gérer les erreurs lors de la lecture d'un fichier :

fs.readFile('non-existent-file.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error:', err);
  } else {
    console.log(data);
  }
});
Copier après la connexion

3. Utiliser Promise

L'utilisation de Promise peut facilement gérer les erreurs dans les opérations asynchrones. Utilisez la méthode Promise.then() pour vérifier les erreurs. Voici un exemple d'utilisation de Promise :

const readFileAsync = function (filename, encoding) {
  return new Promise(function (resolve, reject) {
    fs.readFile(filename, encoding, function (err, result) {
      if (err) {
        reject(err);
      } else {
        resolve(result);
      }
    });
  });
};

readFileAsync('non-existent-file.txt', 'utf8')
  .then(data => console.log(data))
  .catch(err => console.error('Error:', err));
Copier après la connexion

2. Module de gestion des exceptions

Node.js fournit un module de gestion des exceptions global process.on('uncaughtException', …) pour détecter les exceptions non gérées. Ce module permet aux développeurs d'effectuer certaines actions lorsqu'une erreur survient dans le programme. Voici un exemple simple :

process.on('uncaughtException', function (err) {
  console.error('Error:', err);
});
Copier après la connexion

Cependant, l'utilisation de ce module ne devrait pas être le principal moyen de gérer les erreurs. Si votre code contient de nombreuses exceptions non gérées, il sera plus difficile de gérer les erreurs dans votre programme. Assurez-vous d'utiliser ce module avec prudence.

3. Journalisation des erreurs

Lors du traitement des erreurs, il n'est pas conseillé d'enregistrer la liste du journal des erreurs en mémoire. Par conséquent, une meilleure approche consiste à enregistrer les erreurs dans un fichier. Voici un exemple d'utilisation du middleware errorhandler pour enregistrer les erreurs Node.js :

const express = require('express');
const errorHandler = require('errorhandler');
const app = express();

app.use(errorHandler({
  log: true
}));
Copier après la connexion

Le middleware errorhandler permet la journalisation des erreurs dans la console et les fichiers.

4. Mécanisme de nouvelle tentative

Si une opération échoue, nous renvoyons généralement une erreur. Cependant, dans certains cas, comme des problèmes de réseau, il peut être nécessaire de réessayer l'opération. Dans ce cas, le mécanisme de nouvelle tentative est très important.

Voici une fonction JavaScript qui peut être utilisée pour gérer les erreurs et réessayer plusieurs fois :

const retry = require('retry');
const fs = require('fs');

const readfileWithRetry = (filename) => {
  const operation = retry.operation();

  return new Promise((resolve, reject) => {
    operation.attempt(currentAttempt => {
      fs.readFile(filename, 'utf-8', (err, fileData) => {
        if (!err) {
          resolve(fileData);
        } else if (operation.retry(err)) {
          console.error('Error:', err);
          console.error('retrying');
        } else {
          reject(operation.mainError());
        }
      });
    });
  });
};
Copier après la connexion

5. Conclusion

Dans cet article, nous avons appris à gérer les erreurs et la tolérance aux pannes dans Node.js. Si la qualité est importante lorsqu'il s'agit d'écrire du code aussi robuste que possible, elle est également très importante lorsqu'il s'agit de gérer les erreurs. La gestion des erreurs est essentielle pour améliorer les performances et la fiabilité des applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!