Maison > interface Web > js tutoriel > le corps du texte

Simplifier la gestion des erreurs en JavaScript avec Untry

Patricia Arquette
Libérer: 2024-10-16 06:23:02
original
608 Les gens l'ont consulté

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!')
   }
});
Copier après la connexion

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 })
})
Copier après la connexion

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 })
})
Copier après la connexion

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
});
Copier après la connexion

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!

source:dev.to
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal