Rumah > Artikel > hujung hadapan web > Memudahkan Pengendalian Ralat dalam JavaScript dengan 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 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:
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 }) })
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.
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 });
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!