Fehlerbehandlung ist ein entscheidender Aspekt der Softwareentwicklung, um sicherzustellen, dass Anwendungen stabil und benutzerfreundlich bleiben. Allerdings kann die Fehlerverwaltung in JavaScript umständlich und zeitaufwändig sein. Hier kommt Untry ins Spiel – eine schlanke Bibliothek, die die Fehlerbehandlung vereinfacht.
Die JavaScript-Fehlerbehandlung basiert auf Try-Catch-Blöcken, die unhandlich und schwierig zu verwalten sein können, insbesondere wenn es um verschachtelte asynchrone Aufrufe geht. Dieser Ansatz kann zu Folgendem führen:
Übermäßig komplexe und tief verschachtelte Try-Catch-Blöcke führen zu einem Wartungsalptraum. Der Versuch, Fehler mithilfe mehrerer Ebenen von Try-Catch-Anweisungen zu behandeln, führt zu Codeverschleierung, Fehlermaskierung und verschluckten Ausnahmen. Asynchroner Code und Rückrufe verschärfen das Problem.
Sehen wir uns ein Beispiel an, wie komplex die Try-Catch-Fehlerbehandlung in JavaScript werden kann. Nehmen Sie einen E-Commerce-API-Endpunkt, der Produktdetails abruft:
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!') } });
Wenn entweder fetchProduct oder fetchReviews fehlschlägt, wird dieselbe generische Antwort zurückgegeben.
Lassen Sie uns so umgestalten, dass wir Fehler für jeden asynchronen Aufruf individuell behandeln und entscheiden können, was in jedem Fall zu tun ist:
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 }) })
Jetzt behandelt der Code jeden Fall separat, obwohl er weniger lesbar und daher weniger wartbar erscheint.
Machen wir es möglich, jeden Fall separat zu behandeln, ohne die Lesbarkeit zu beeinträchtigen, indem wir Untry verwenden:
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 ist eine leichte JavaScript-Bibliothek, die von der Fehlerbehandlungsphilosophie von Go inspiriert ist. Dieser Ansatz eliminiert den Try-Catch-Fluss. Ermöglicht die explizite Fehlerverwaltung unter Verwendung von Fehlern als Wert, nicht als Ausnahme.
Untry führt eine Funktion aus, fängt alle darin enthaltenen Fehler ab und gibt ein Array zurück, das den resultierenden Wert und alle ausgegebenen Fehler enthält. Es handelt sich um eine einfache Lösung zur Fehlerverwaltung, die Ihren Code robuster, lesbarer und wartbarer macht.
import untry from 'untry'; let [value, error] = untry(() => { // code that might throw an error });
NPM-Paket: https://www.npmjs.com/package/untry
Das obige ist der detaillierte Inhalt vonVereinfachen Sie die Fehlerbehandlung in JavaScript mit Untry. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!