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.
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 à :
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 }) })
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.
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 });
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!