Maison >interface Web >js tutoriel >Simplifier la gestion des erreurs en JavaScript avec Untry

Simplifier la gestion des erreurs en JavaScript avec Untry

Patricia Arquette
Patricia Arquetteoriginal
2024-10-16 06:23:02659parcourir

Simplifying Error Handling in JavaScript with Untry

La gestion des erreurs est un aspect crucial du développement logiciel, garantissant que les applications restent stables et conviviales. Cependant, la gestion des erreurs en JavaScript peut s'avérer fastidieuse et chronophage. C'est là qu'intervient Untry : une bibliothèque légère qui simplifie la gestion des erreurs.

Gestion des erreurs JavaScript.

La gestion des erreurs JavaScript repose sur des blocs try-catch, qui peuvent devenir lourds et difficiles à gérer, en particulier lorsqu'il s'agit d'appels asynchrones imbriqués. Cette démarche peut conduire à :

  • Des erreurs non gérées passent entre les mailles du filet
  • Difficulté à nettoyer les ressources après des erreurs
  • Code encombré de logique de gestion des erreurs

Les blocs try-catch trop complexes et profondément imbriqués créent un cauchemar de maintenance. En essayant de gérer les erreurs à l'aide de plusieurs couches d'instructions try-catch, cela entraîne une obscurcissement du code, un masquage des erreurs et des exceptions avalées. Le code asynchrone et les rappels aggravent le problème.

Voyons un exemple de la complexité de la gestion des erreurs try-catch en JavaScript. Prendre un point de terminaison d'API de commerce électronique qui récupère les détails du produit :

app.get('/product/:id', async (req, res) => {
   try {
      const product = await fetchProduct(req.params.id)
      const reviews = await fetchReviews(req.params.id)
      res.json({ product, reviews })
   } catch (error) {
      res.status(500).send('Something went wrong!')
   }
});

Si fetchProduct ou fetchReviews échoue, il renverra la même réponse générique.

Refactorisons de manière à pouvoir gérer les erreurs individuellement pour chaque appel asynchrone et décidons quoi faire dans chaque cas :

app.get('/product/:id', async (req, res) => {
   let product
   let reviews
   let productError
   let reviewsError

   // product
   try {
      product = await fetchProduct(req.params.id)
   } catch (error) {
      productError = error
   }

   if (productError) {
      res.status(500).json({ error: productError })
      return
   }

   // reviews
   try {
      reviews = await fetchReviews(req.params.id)
   } catch (error) {
      reviewsError = error
   }

   if (reviewsError) {
      res.status(500).json({ error: reviewsError })
      return
   }

   // final response
   res.json({ product, reviews })
})

Maintenant, le code gère chaque cas séparément, même s'il semble moins lisible et donc moins maintenable.

Permettons de traiter chaque cas séparément sans sacrifier beaucoup de lisibilité en utilisant Untry :

app.get('/product/:id', async (req, res) => {
   let [product, productError] = await untry(() => fetchProduct(req.params.id))
   if (productError) {
      res.status(500).json({ error: productError })
      return
   }

   let [reviews, reviewsError] = await untry(() => fetchReviews(req.params.id))
   if (reviewsError) {
      res.status(500).json({ error: reviewsError })
      return
   }

   res.json({ product, reviews })
})

Qu’est-ce qu’Untry ?

Untry est une bibliothèque JavaScript légère inspirée de la philosophie de gestion des erreurs de Go. Cette approche élimine le flux try-catch. Permet la gestion explicite des erreurs en utilisant l'erreur comme valeur et non comme exception.

Comment fonctionne Untry

Untry exécute une fonction, détecte toute erreur à l'intérieur et renvoie un tableau contenant la valeur résultante et toute erreur générée. C'est une solution simple pour gérer les erreurs, rendant votre code plus robuste, lisible et maintenable.

import untry from 'untry';

let [value, error] = untry(() => {
  // code that might throw an error
});

Avantages clés

  • Gestion simplifiée des erreurs
  • Gestion explicite des erreurs
  • Nettoyage facile en cas d'échec
  • Gestion des erreurs personnalisable
  • Rationalisez votre développement

Avec Untry, vous pouvez :

  • Écrivez du code plus robuste
  • Réduire le passe-partout de gestion des erreurs
  • Échapper à l'enfer en essayant et en attrapant

Forfait NPM : https://www.npmjs.com/package/untry

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!

Déclaration:
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