هنرجو
حلشده
مدیریت خطا در async/await جاوااسکریپت را کجا انجام دهیم؟
نازنین رضایی
1405/05/14 09:40
💬 2 پاسخ
◉ 221 بازدید
پاسخها
2 پاسخ ثبتشده
مهندس امیررضا مرادی
مدرس
✓ پاسخ پذیرفتهشده
قاعده خوب این است که خطا را در لایهای Catch کنید که میتواند درباره آن تصمیم بگیرد. تابع سطح پایین میتواند خطا را با Context مناسب دوباره Throw کند و لایه UI پیام قابلفهم نشان دهد. خطا را فقط Log نکنید و بدون Throw ادامه ندهید.
برای چند درخواست مستقل:
try {
const results = await Promise.all(requests);
} catch (error) {
// یک Failure باعث Reject شدن Promise.all میشود
}
اگر نتیجه تمام درخواستها، حتی موارد Fail شده، لازم است از Promise.allSettled استفاده کنید و status هر Result را بررسی کنید. همچنین fetch برای HTTP 404 یا 500 خودکار Reject نمیشود؛ response.ok را کنترل کنید و در صورت نیاز Error بسازید.
نازنین رضایی
هنرجو
نکته response.ok دلیل مشکلم بود؛ چون درخواست 404 وارد catch نمیشد. با بررسی status حل شد.