معالجة الأخطاء والمعترضات العامة
عالج أخطاء الطلبات واضبط معترضات Axios.
معالجة الأخطاء والمعترضات العامة درس مجاني في Vue Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Vue Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Vue Academy 3 دروس في المجموع.
قد تفشل الطلبات
قد تنقطع الشبكات، وقد تعيد الخوادم أخطاء، وقد تنتهي صلاحية الرموز. تتوقع التطبيقات المتينة الفشل وتستجيب له بسلاسة بدلًا من الانهيار أو ترك المستخدم يحدّق في مؤشر تحميل إلى ما لا نهاية.
استخدام try/catch حول الطلبات
غلّف الطلبات التي تنتظرها داخل try/catch لالتقاط الأخطاء. يُطلق Axios خطأً عندما يستجيب الخادم بحالة 4xx أو 5xx.
async fetchPosts() {
try {
const res = await api.get("/posts")
this.posts = res.data
} catch (err) {
console.error(err)
}
}فحص الخطأ
يحمل خطأ Axios تفاصيل مفيدة. يكون error.response موجودًا عندما يرسل الخادم ردًا، بينما يعني غيابه عادةً فشلًا في الشبكة أو انتهاءً للمهلة.
catch (err) {
if (err.response) {
console.log(err.response.status)
console.log(err.response.data)
} else {
console.log("Network error")
}
}تتبّع حالة الخطأ
خزّن رسالة الخطأ في حالة تفاعلية كي يتمكن القالب من عرضها للمستخدم.
data() {
return { posts: [], loading: false, error: null }
}تعيين الخطأ
صفّر الخطأ قبل كل طلب، ثم عيّن قيمته داخل كتلة catch.
async fetchPosts() {
this.loading = true
this.error = null
try {
this.posts = (await api.get("/posts")).data
} catch (err) {
this.error = "Could not load posts. Please try again."
} finally {
this.loading = false
}
}عرض رسائل الخطأ
اعرض الخطأ في القالب كي يفهم المستخدمون ما حدث وما الإجراء التالي المطلوب.
<template>
<p v-if="loading">Loading...</p>
<p v-else-if="error" class="error">{{ error }}</p>
<ul v-else>
<li v-for="p in posts" :key="p.id">{{ p.title }}</li>
</ul>
</template>ما المقصود بـ Interceptors؟
تتيح لك interceptors في Axios تشغيل كود تلقائيًا مع كل طلب أو استجابة. وهي مناسبة جدًا للاهتمامات المشتركة بين أجزاء التطبيق، مثل إرفاق الرموز أو التعامل مع الأخطاء في موضع مركزي واحد.
interceptors للطلبات
يُنفَّذ interceptor الطلب قبل إرسال كل طلب. استخدمه لإرفاق رأس المصادقة على مستوى التطبيق بأكمله.
api.interceptors.request.use(config => {
const token = localStorage.getItem("token")
if (token) {
config.headers.Authorization = "Bearer " + token
}
return config
})interceptors للاستجابات
يُنفَّذ interceptor الاستجابة بعد وصول كل استجابة. ويتلقى دالتي استدعاء: واحدة للنجاح وأخرى للأخطاء.
api.interceptors.response.use(
response => response,
error => {
if (error.response && error.response.status === 401) {
// redirect to login
}
return Promise.reject(error)
}
)التعامل العام مع الأخطاء
يعني توحيد منطق الأخطاء داخل interceptor للاستجابة بقاء المكوّنات الفردية نظيفة. وتوضع الحالات الشائعة مثل 401 لتسجيل الخروج أو 500 لعرض إشعار في موضع واحد.
api.interceptors.response.use(
res => res,
error => {
const status = error.response ? error.response.status : null
if (status === 401) logout()
if (status >= 500) showToast("Server error, try later")
return Promise.reject(error)
}
)منطق إعادة المحاولة البسيط
في الشبكات غير المستقرة، يمكنك إعادة محاولة الطلب الفاشل عددًا محدودًا من المرات قبل التوقف.
async function getWithRetry(url, retries = 2) {
try {
return await api.get(url)
} catch (err) {
if (retries > 0) {
return getWithRetry(url, retries - 1)
}
throw err
}
}اختبار سريع
اختبر معلوماتك حول التعامل مع الأخطاء وinterceptors.
مراجعة
غلّف الطلبات داخل try/catch، واعرض رسالة error ودية في واجهة المستخدم، وافحص error.response للتمييز بين أعطال الخادم وأعطال الشبكة. تعمل interceptors على توحيد الاهتمامات: إذ تُرفق interceptors الطلبات الرموز، وتتولى interceptors الاستجابات الأخطاء العامة، ويضيف مساعد صغير لإعادة المحاولة قدرًا من المتانة. ستعمل بعد ذلك على تحسين أداء التطبيق.
تعلم HTML مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 42
- الدروس
- 156
الأسئلة الشائعة
هل درس «معالجة الأخطاء والمعترضات العامة» مجاني؟
نعم — نص درس «معالجة الأخطاء والمعترضات العامة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Vue Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Vue Academy 3 دروس في المجموع.
ماذا ستتعلم في «معالجة الأخطاء والمعترضات العامة»؟
عالج أخطاء الطلبات واضبط معترضات Axios. تتمرن على Vue Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Vue Academy؟
لا تُشترط خبرة سابقة. Vue Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «معالجة الأخطاء والمعترضات العامة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Vue Academy هذا؟
نعم. كل درس في Vue Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- طلبات HTTP باستخدام Axios
- خطافات دورة الحياة وجلب البيانات
- معالجة الأخطاء والمعترضات العامة