首頁 > web前端 > js教程 > 主體

使用 Untry 簡化 JavaScript 中的錯誤處理

Patricia Arquette
發布: 2024-10-16 06:23:02
原創
546 人瀏覽過

Simplifying Error Handling in JavaScript with Untry

錯誤處理是軟體開發的重要方面,可確保應用程式保持穩定且使用者友好。然而,管理 JavaScript 中的錯誤可能既麻煩又耗時。這就是 Untry 的用武之地——一個簡化錯誤處理的輕量級函式庫。

JavaScript 錯誤處理。

JavaScript 錯誤處理依賴 try-catch 區塊,這可能會變得笨拙且難以管理,特別是在處理嵌套非同步呼叫時。這種方法可以導致:

  • 未處理的錯誤從裂縫中溜走
  • 發生錯誤後資源清理困難
  • 程式碼充斥著錯誤處理邏輯

過於複雜且深層嵌套的 try-catch 區塊會造成維護噩夢。嘗試使用多層 try-catch 語句來處理錯誤會導致程式碼混淆、錯誤屏蔽和吞噬異常。非同步代碼和回調加劇了問題。

讓我們來看一個範例,了解 JavaScript 中的 try-catch 錯誤處理有多複雜。採用取得產品詳細資訊的電子商務 API 端點:

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!')
   }
});
登入後複製

如果 fetchProduct 或 fetchReviews 失敗,它將傳回相同的通用回應。

讓我們以一種可以單獨處理每個非同步呼叫的錯誤的方式進行重構,並決定在每種情況下做什麼:

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 })
})
登入後複製

現在程式碼會單獨處理每種情況,儘管它看起來可讀性較差,因此可維護性較差。

讓我們可以使用 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 是一個輕量級的 JavaScript 函式庫,靈感來自 Go 的錯誤處理哲學。這種方法消除了 try-catch 流程。允許使用錯誤作為值而不是異常進行明確錯誤管理。

Untry 的工作原理

Untry 執行一個函數,捕獲內部的任何錯誤,並傳回一個包含結果值和任何拋出的錯誤的陣列。這是一個管理錯誤的簡單解決方案,使您的程式碼更加健壯、可讀和可維護。

import untry from 'untry';

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

主要優點

  • 簡化的錯誤處理
  • 明確錯誤管理
  • 故障時輕鬆清理
  • 可自訂的錯誤處理
  • 簡化您的開發

使用 Untry,您可以:

  • 寫更健壯的程式碼
  • 減少錯誤處理樣板
  • 逃離嘗試捕捉地獄

NPM 套件:https://www.npmjs.com/package/untry

以上是使用 Untry 簡化 JavaScript 中的錯誤處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!