Rumah  >  Artikel  >  hujung hadapan web  >  Memudahkan Pengendalian Ralat dalam JavaScript dengan Untry

Memudahkan Pengendalian Ralat dalam JavaScript dengan Untry

Patricia Arquette
Patricia Arquetteasal
2024-10-16 06:23:02610semak imbas

Simplifying Error Handling in JavaScript with Untry

Pengendalian ralat ialah aspek penting dalam pembangunan perisian, memastikan aplikasi kekal stabil dan mesra pengguna. Walau bagaimanapun, mengurus ralat dalam JavaScript boleh menyusahkan dan memakan masa. Di situlah Untry masuk – perpustakaan ringan yang memudahkan pengendalian ralat.

Pengendalian ralat JavaScript.

Pengendalian ralat JavaScript bergantung pada blok try-catch, yang boleh menjadi sukar dan sukar untuk diurus, terutamanya apabila berurusan dengan panggilan tak segerak bersarang. Pendekatan ini boleh membawa kepada:

  • Ralat yang tidak terurus yang tergelincir melalui celah-celah
  • Kesukaran dalam membersihkan sumber selepas ralat berlaku
  • Kod berselerak dengan logik pengendalian ralat

Blok cuba tangkap yang terlalu kompleks dan bersarang dalam mewujudkan mimpi ngeri penyelenggaraan. Dengan percubaan untuk mengendalikan ralat menggunakan berbilang lapisan pernyataan cuba-tangkap membawa kepada pengeliruan kod, penutupan ralat dan pengecualian yang ditelan. Kod tak segerak dan panggil balik memburukkan lagi masalah.

Mari kita lihat contoh bagaimana kompleks boleh menjadi pengendalian ralat cuba-tangkap dalam JavaScript. Mengambil titik akhir API eCommerce yang mengambil butiran produk:

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

Jika fetchProduct atau fetchReviews gagal, ia akan mengembalikan respons generik yang sama.

Mari kita memfaktorkan semula dengan cara yang kita boleh mengendalikan ralat secara individu untuk setiap panggilan async dan memutuskan perkara yang perlu dilakukan dalam setiap kes:

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

Kini kod mengendalikan setiap kes secara berasingan, walaupun ia kelihatan kurang boleh dibaca dan oleh itu kurang boleh diselenggara.

Mari kita boleh mengendalikan setiap kes secara berasingan tanpa mengorbankan banyak kebolehbacaan dengan menggunakan 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 })
})

Apa itu Untry?

Untry ialah perpustakaan JavaScript ringan yang diilhamkan oleh falsafah pengendalian ralat Go. Pendekatan ini menghapuskan aliran cuba-tangkap. Membenarkan pengurusan ralat eksplisit menggunakan ralat sebagai nilai, bukan sebagai pengecualian.

Cara Untry Berfungsi

Untry melaksanakan fungsi, menangkap sebarang ralat di dalamnya dan mengembalikan tatasusunan yang mengandungi nilai yang terhasil dan sebarang ralat yang dilemparkan. Ia merupakan penyelesaian mudah untuk mengurus ralat, menjadikan kod anda lebih mantap, boleh dibaca dan boleh diselenggara.

import untry from 'untry';

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

Faedah Utama

  • Pengendalian ralat yang dipermudahkan
  • Pengurusan ralat eksplisit
  • Pembersihan mudah apabila gagal
  • Pengendalian ralat boleh disesuaikan
  • Memperkemaskan Perkembangan Anda

Dengan Untry, anda boleh:

  • Tulis kod yang lebih mantap
  • Kurangkan ralat pengendalian boilerplate
  • Larikan diri cuba-tangkap neraka

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

Atas ialah kandungan terperinci Memudahkan Pengendalian Ralat dalam JavaScript dengan Untry. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn