Lädt...


🔧 Simplifying Error Handling in JavaScript with Untry


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Error handling is a crucial aspect of software development, ensuring applications remain stable and user-friendly. However, managing errors in JavaScript can be cumbersome and time-consuming. That's where Untry comes in – a lightweight library that simplifies error handling.

JavaScript error handling.

JavaScript error handling relies on try-catch blocks, which can become unwieldy and difficult to manage, especially when dealing with nested asynchronous calls. This approach can lead to:

  • Unhandled errors slipping through the cracks
  • Difficulty in cleaning up resources after errors occur
  • Code cluttered with error handling logic

Overly complex and deeply nested try-catch blocks creates a maintenance nightmare. By attemptin to handle errors using multiple layers of try-catch statements leads to code obfuscation, error masking, and swallowed exceptions. Asynchronous code and callbacks exacerbate the problem.

Let´s see an example of how complex can become try-catch error handling in JavaScript. Taking an eCommerce API endpoint that fetches product details:

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!')
   }
});

If either fetchProduct or fetchReviews fails it will return the same generic response.

Let's refactor in a way that we can handle errors individually for each async call, and decide what to do in each case:

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 })
})

Now the code handles each case separately, although it seems less readable and therefore less maintainable.

Let's make it possible to handle each case separately without sacrificing much readability by using 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 })
})

What is Untry?

Untry is a lightweight JavaScript library inspired by Go's error handling philosophy. This approach eliminates the try-catch flow. Allows the explicit error management using error as value, not as exception.

How Untry Works

Untry executes a function, catches any error inside, and returns an array containing the resulting value and any thrown error. It is a simple solution for managing errors, making your code more robust, readable, and maintainable.

import untry from 'untry';

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

Key Benefits

  • Simplified error handling
  • Explicit error management
  • Easy cleanup on failure
  • Customizable error handling
  • Streamline Your Development

With Untry, you can:

  • Write more robust code
  • Reduce error handling boilerplate
  • Escape try-catch hell

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

...

🔧 Simplifying Error Handling in JavaScript with Untry


📈 73.52 Punkte
🔧 Programmierung

🔧 Simplifying RESTful API Error Handling in Spring Boot with @ControllerAdvice


📈 29.5 Punkte
🔧 Programmierung

🔧 Simplifying Async Error Handling in TypeScript


📈 29.5 Punkte
🔧 Programmierung

🔧 Simplifying API Error Handling in React Apps


📈 29.5 Punkte
🔧 Programmierung

🔧 Day 3: File Handling and Error Handling


📈 26.72 Punkte
🔧 Programmierung

🔧 Learning GO : 08 - File Handling, Error Handling


📈 26.72 Punkte
🔧 Programmierung

🔧 ### Introduction to Programming: Mastering File Handling and Exploring Error Handling


📈 26.72 Punkte
🔧 Programmierung

🔧 Simplifying Webhook Handling with Vector.dev: A Modern Solution for Serverless Apps


📈 23.3 Punkte
🔧 Programmierung

🔧 Simplifying API Data Handling with C# Records


📈 23.3 Punkte
🔧 Programmierung

🔧 GBase 8s Large Object Handling: Simplifying Large Data Insertion and Management


📈 23.3 Punkte
🔧 Programmierung

🔧 Simplifying Form Handling in Vue Applications with Form JS - Inspired by Inertia JS


📈 23.3 Punkte
🔧 Programmierung

🔧 Simplifying Event Handling Using Lambda Expressions


📈 23.3 Punkte
🔧 Programmierung

🔧 Error Handling (How to create Custom Error Handlers and Exceptions) - FastAPI Beyond CRUD (Part 16)


📈 22.66 Punkte
🔧 Programmierung

📰 PowerShell: Error Handling with $Error


📈 22.66 Punkte
📰 IT Nachrichten

🔧 Exploring Error Boundary in React: Enhancing Robustness and Error Handling


📈 22.66 Punkte
🔧 Programmierung

🔧 Error Boundaries and Error Handling in ReactJS


📈 22.66 Punkte
🔧 Programmierung

🔧 Boost Your React App's UX: Comprehensive Error Handling with Error Boundaries


📈 22.66 Punkte
🔧 Programmierung

🔧 Mastering Error Boundaries in React: A Guide to Effective Error Handling


📈 22.66 Punkte
🔧 Programmierung

🔧 How to Make JavaScript Error Handling More Readable with ESLint Rules


📈 22.14 Punkte
🔧 Programmierung

🔧 Mastering Asynchronous JavaScript: How to Effectively Use Promises, Async/Await, and Error Handling


📈 22.14 Punkte
🔧 Programmierung

🔧 Effortless Error Handling in JavaScript: How the Safe Assignment Operator Simplifies Your Code


📈 22.14 Punkte
🔧 Programmierung

🔧 Streamline Error Handling with JavaScript’s New ?= Operator


📈 22.14 Punkte
🔧 Programmierung

🔧 Mastering Error Handling in JavaScript: The Power of try...catch


📈 22.14 Punkte
🔧 Programmierung

🔧 Error Handling in JavaScript: A Comprehensive Guide


📈 22.14 Punkte
🔧 Programmierung

🔧 Error Handling in JavaScript for Better Code Quality


📈 22.14 Punkte
🔧 Programmierung

🔧 Implementing Firebase Password Reset with Error Handling in Your JavaScript Application


📈 22.14 Punkte
🔧 Programmierung

🔧 From Bugs to Bulletproof: Transforming JavaScript with Error Handling


📈 22.14 Punkte
🔧 Programmierung

🔧 Day 02 : Script Loading Methods, Variables, Scopes, and Error Handling in JavaScript


📈 22.14 Punkte
🔧 Programmierung

🔧 Error Handling in JavaScript


📈 22.14 Punkte
🔧 Programmierung

🔧 Mastering Error Handling in JavaScript


📈 22.14 Punkte
🔧 Programmierung

🔧 The Ultimate Guide to JavaScript Error Handling


📈 22.14 Punkte
🔧 Programmierung

🔧 Goodbye Exceptions! Mastering Error Handling in JavaScript with the Result Pattern


📈 22.14 Punkte
🔧 Programmierung

🔧 JavaScript Error Handling — Try, Catch, Throw, Finally


📈 22.14 Punkte
🔧 Programmierung

matomo