هناك ثلاثة أنواع أخطاء رئيسية:
خطأ التجميع:
يحدث هذا النوع من الخطأ بشكل عام بسبب مشكلة بناء جملة الشفرة.
توقف الفعل ASP عن التشغيل بسبب خطأ في التجميع.
تشغيل خطأ
يحدث هذا الخطأ عندما تكون مستعدًا لتشغيل ASP.
على سبيل المثال: إذا حاولت تعيين قيمة لمتغير ، ولكنها تتجاوز النطاق المسموح به من قبل المتغير.
خطأ منطقي
الأخطاء المنطقية هي الأكثر صعوبة في اكتشافها.
هذا يتطلب منا التحقق بدقة الكود الخاص بنا.
نظرًا لأن أخطاء التجميع تحدث عادةً مع أخطاء منطقية ويمكن عرضها بشكل عام ، فإن ما نشعر بالقلق هو خطأ العملية. إنه ينتهي تشغيل ASP ويترك حفنة من النص غير الودي للمستخدم.
فكيف نتعامل مع أخطاء العملية! ؟ دعنا نلقي نظرة أولاً عند استئناف البيان التالي ، ستحدث جميع أخطاء التشغيل.
هنا رمز خطأ:
Microsoft Ole DB Provider لـ ODBC Drivers Error 80004005
[Microsoft] [ODBC Driver Manager] اسم مصدر البيانات غير موجود ولا يوجد برنامج تشغيل افتراضي
/test.asp ، الخط 60
عندما نستخدم البيان التالي على السيرة الذاتية في الجزء العلوي من البرنامج ، سيتم تجاهل جميع الأخطاء وسيقوم البرنامج تلقائيًا بتنفيذ البيان التالي. وبهذه الطريقة ، سيتم تنفيذ البرنامج بالكامل ، ولن يرى المستخدم رسالة الخطأ بعد حدوث خطأ. ولكن هناك أيضًا عيوب بهذه الطريقة ، أي إذا لم يتم تنفيذ البرنامج كما تتخيل ، فسيكون من الصعب عليك معرفة الخطأ ، لذلك عليك التعامل مع الأخطاء عند الضرورة.
التعامل مع الأخطاء
في ASP ، فإن أفضل طريقة للتعامل مع الأخطاء هي وضع الرمز في أسفل البرنامج للتعامل مع الأخطاء. أوصي أيضًا باستخدام المخازن المؤقتة في كل برنامج ASP. وبهذه الطريقة ، في حالة حدوث خطأ ، ستتوقف الصفحة وسيتم مسح محتوى الصفحة ، بحيث لن يرى المستخدم رسالة الخطأ وسيكون هناك شكاوى أقل عنك! هنا مثال:
<٪@ language = vbscript ٪> <٪ "تعيين المخزن المؤقت إلى الاستجابة الحقيقية. عرض رسالة الخطأ إلى المستخدم ٪> <html> <head> <title> </title> </head> <bgcolor =#c0c0c0> <font face = arial> حدث خطأ في تنفيذ صفحة ASP هذه <br> الرجاء الإبلاغ عن ما يلي معلومات إلى مكتب الدعم <p> <b> كائن خطأ الصفحة </b> <br> رقم الخطأ: <٪ = err.number ٪> <br> رسالة الخطأ: <٪ = err.description ٪> <br> خطأ الرسالة: <٪ = err.description ٪> <br> حدث خطأ في الملف: <٪ = err.source ٪> <br> سطر الخطأ: <٪ = err.line ٪> <br> </font> </body> </html> <٪ end if ٪>
كما ترون أعلاه ، قمت أولاً بتعيين خاطئ السيرة الذاتية بعد ذلك ، حتى لا يؤثر خطأ على تنفيذ البرنامج.
معالجة الأخطاء وقاعدة البيانات
إن تنفيذ إضافة قواعد البيانات إلى معالجة الأخطاء معقد للغاية. إذا كان لدينا برنامج به العديد من الأوامر لإضافة سجلات إلى قاعدة البيانات ، إذا تم تنفيذ إدراج/تحديث في أسفل البرنامج ، إذا حدث خطأنا مرة أخرى من قبل ، فستكون قد انتهى! سنضيف رسالة خطأ إلى قاعدة البيانات. لأننا استخدمنا في استئناف الخطأ بعد ذلك ، تم تجاهل جميع الأخطاء! حتى إذا كان هناك خطأ من قبل ، فسيظل البرنامج يضيف بيانات إلى قاعدة البيانات.
لتجنب هذا الموقف ، يتعين علينا القيام ببعض الحيل أولاً.
إذا كان err.number = 0 و objconnection.errors.count = 0 ، فإنه يمكن تنفيذ العبارة هنا لأنه لا يوجد أي خطأ في تعيين rstresults = dbdata.execute (txtsql) end إذا
حلول أكثر تقدما
عند حدوث خطأ ، يمكنك أيضًا عرض المزيد من رسائل الخطأ. فيما يلي مثال على التعامل مع كل من أخطاء قاعدة البيانات والصفحة. (بما أنني أعتقد أن اللغة الإنجليزية أكثر صعوبة في التحدث في بعض الأماكن ، فلا توجد ترجمة).
<٪ if err.number <> 0 ثم استجابة. حدد الحالة err.number case 8 "حدد رقم الخطأ" آخر خطأ هنا "خطأ عام إذا isObject (objConnection) ثم إذا كان objConnection.errors.count> 0 then ٪> <٪> < B> كائن اتصال قاعدة البيانات </b> <٪ لـ intloop = 0 إلى objConnection.errors.count - 1 ٪> خطأ: <٪ = objConnection.errors (number) .number ٪> <br> الوصف: <٪ = objConnection.errors (Intloop) .description ٪> <br> المصدر: <٪ = objConnection.errors (inloop) .Source ٪> <br> sqlstate: <٪ = objConnection.errors ( intloop) .sqlstate ٪> <br> nativeerror: <٪ = objConnection.Errors (intloop) .Nativeerror ٪> <p> الكائن </b> <br> رقم الخطأ <٪ = err.number ٪> <br> الوصف خطأ <٪ = err.description ٪> <br> المصدر <٪ = err.source ٪> <br> linenumber <٪ = err.line ٪> <p> <٪ end if end select end if ٪>
يسمح لنا المثال أعلاه بالتعامل مع العديد من المشكلات التي تحدث في قاعدة البيانات ، والتي تُستخدم أيضًا بشكل شائع في برامجنا اليومية! يجب أن نرى أيضًا عبارة CASE SELECT ، والتي تتيح لنا التعامل مع أخطاء محددة.
إعادة التوجيه والتعامل مع الأخطاء
شيء واحد يجب أن نوليه هو الكائن المعاد توجيهًا الذي نستخدمه في كثير من الأحيان. لذلك علينا أن نتعامل معها قبل الدوران ، على النحو التالي:
إذا كان العدد = 0 و objconnection.errors.count = 0 ثم استجابة
اجعل الرمز أكثر أنيقًا
لجعل الكود أكثر أناقة ، أولاً ، الملف الذي يتم التعامل معه في الملف أولاً في ملف يحتوي على. بهذه الطريقة يمكنك استخدامه في أي ملف. هذا هو أيضا مريحة لتعديل.
أضف (بعد إعلان اللغة بالطبع) استئناف ON ERRET البيان التالي في الجزء العلوي من البرنامج.
قم بفحص الخطأ قبل تنفيذ SQL.
كان معالجة الخطأ مطلوبة أيضًا قبل استخدام إعادة التوجيه.
تتيح لك التعامل مع الأخطاء التي تحتوي على ملفات في الجزء العلوي من الرمز