موصى به: استخدم ASP لتطوير مواقع الويب بشكل عام ، تكون المواقع الإلكترونية على نطاق واسع أقل عرضة لاستخدام ASP للهندسة المعمارية ، ولكن لا يزال ASP يحتل نطاق سوق كبير في مواقع الأعمال الصغيرة والمتوسطة الحجم. يتم تفضيل ASP من قبل مسؤولي الموقع الصغيرة والمتوسطة الحجم لدورة التطوير القصيرة القصيرة وسهولة الصيانة. ومع ذلك ، بقدر ما أعرف
7.4.2 معالجة الأخطاء VBScript
في VBScript ، لا يمكن جعل مترجم البرنامج النصي لا يتعامل مع أي أخطاء يجدها وتستمر في تشغيل العبارة التالية باستخدام ON ERRER SRATUES TEXT. بمجرد معالجة هذا البيان ، سيستمر محرك البرنامج النصي في تشغيل البرنامج اللاحق دون دفع أي أخطاء تم العثور عليها. ومع ذلك ، فإن هذه العملية تنطبق فقط على البيئات التي يتم فيها تنفيذ العبارات بالتتابع ، وبعبارة أخرى ، وليس على الوظائف المتداخلة أو الروتين الفرعي.
1. استخدم ON ON ERRREAR BRATES NEXT
عند حدوث خطأ في روتين فرعي ، إذا لم يتم تشغيل البيان التالي ، فسيتم تسليم الخطأ إلى البيئة التي يطلق عليها. يتم تكرار هذه العملية حتى يتم العثور على البيئة التي تعمل في استئناف ON على استئناف العبارة التالية ، أو يتم العثور على معالج خطأ البرنامج النصي الافتراضي ، ويتم تسليم الخطأ إلى ASP ويعرض IIS صفحة الخطأ الافتراضية.
تعني سلسلة المكالمات الخاطئة هذه أنه يمكن إنشاء الوظائف والروايات الفرعية التي تمنع أخطاء التشغيل من التسبب في توقف البرنامج. إذا تم وضع البيان التالي في استئناف البيان التالي في بداية الروتين الفرعي ، فسيقوم أي أخطاء في وقت التشغيل بإحباط تشغيل الروتين الفرعي ، لكن البرنامج الذي يستدعي الروتين الفرعي سيستمر في العمل دون التسبب في توقف صفحة الويب.
على سبيل المثال ، إذا كنت بحاجة إلى كتابة سلسلة إلى ملف ، فيمكنك الوصول إلى الملف من خلال وظيفة مستقلة لمنع الأخطاء من مقاطعة تشغيل البرنامج بأكمله:
"قم بإنشاء ملف يسمى strfilename ، والكتابة فوق أي موجه بهذا الاسم
'ويكتب strcontent فيه ثم يغلق الملف
يعود صحيح إذا نجحت ، أو خطأ في أي خطأ
وظيفة كتابية (strfilename ، strcontent)
عند استئناف الخطأ التالي ، قم بإيقاف تشغيل معالج الخطأ الافتراضي
witenewfile = flase 'قيمة الإرجاع الافتراضية للوظيفة
تعيين objfso = createObject (scripting.filesystemObject)
إذا err.number = 0 ثم قم بتعيين objfile = objfso.createTextFile (strfilename ، true)
إذا err.number = 0 ثم objfile.writeline strcontent
إذا err.number = 0 ثم objfile.close
إذا err.number = 0 ثم OrbeenewFile = true
وظيفة نهاية
لاحظ أن البرنامج أعلاه يتحقق من خاصية أرقام كائن ERR الخاص بـ VBScript قبل محاولة معالجة كل عبارة برنامج. إذا كانت هذه القيمة 0 (لم يحدث أي خطأ بعد) ، فيمكن استمرار عملية تقديم الملف وإنشاء الملف. ومع ذلك ، في حالة حدوث الخطأ ، سيقوم محرك البرنامج النصي بتعيين قيمة خاصية كائن ERR وتستمر في معالجة السطر التالي.
طالما أنه يمكن تشغيله بشكل طبيعي دون التسبب في خطأ ، سيتم ضبط قيمة إرجاع الوظيفة على TRUE. وإلا فإن الوظيفة ستعود كاذبة. في البرمجة ، يمكنك استخدام هذه الوظيفة واتخاذ إجراءات أخرى بعد اختبارها.
فيما يلي مثال بسيط ، نريد استخدام وظيفة منفصلة للجزء الأول من المهمة حتى نتمكن من تحديد مكان الخطأ بشكل أكثر دقة. هذا يجعل من السهل قراءة الكود أثناء تصحيح الأخطاء. في البرنامج الرئيسي للصفحة ، يمكن استدعاء ثلاث وظائف منفصلة.
إذا كان CreateNewFile (strfilename) ثم "قم بإنشاء الملف الجديد
Response.write ملف جديد تم إنشاؤه بنجاح <br>
إذا كان WriteContent (strcontent) ثم اكتب المحتوى
Response.write محتوى مكتوب إلى ملف <br>
آخر
Response.write خطأ: فشل في الكتابة إلى الملف <br>
إنهاء إذا
إذا كان CloseFile (strfilename) ثم
reponse.write ملف مغلق <br>
آخر
reponse.write خطأ: فشل في إغلاق الملف <br>
إنهاء إذا
آخر
respons.write خطأ: فشل في إنشاء الملف الجديد <br>
نهاية funciotn
2. استخدام ON ERROR GOTO 0
في ASP 2.0 (على الرغم من عدم وجود وثائق) و ASP 3.0 ، يمكن أيضًا استعادة سلوك معالجة الأخطاء الافتراضية باستخدام عبارة ON ERROR GOTO 0. بعد تشغيل هذا البيان ، سيؤدي خطأ وقت التشغيل الذي يحدث إلى معالجة الأخطاء الافتراضية ، والتحقق من كل برنامج متداخل في سلسلة البيئة حتى رمز الصفحة الرئيسي. إذا لم تكن هناك بيئة أخرى لإيقاف تشغيل الخطأ الافتراضي ، فسيتوقف تنفيذ صفحة الويب وعرض صفحة الخطأ الافتراضية IIS.
3.
في المثال السابق ، عند إيقاف تشغيل معالجة الأخطاء الافتراضية ، تحقق مما إذا كان الخطأ قد حدث عن طريق التحقق من خاصية رقم كائن VBSCript ERR. يخزن كائن ERR معلومات حول أخطاء وقت التشغيل. يعطي الجدولين 7-3 و 7-4 الأساليب والخصائص التي يوفرها كائن VBScript ERR.
الجدول 7-3 طرق كائن VBScript
طريقة
يوضح
واضح
امسح جميع إعدادات كائن ERR الحالية
يرفع
حدث خطأ في وقت التشغيل
الجدول 7-4 خصائص كائن VBScript
ملكية
يوضح
وصف
قم بتعيين أو إرجاع سلسلة تصف الخطأ
رقم
(افتراضي) قم بتعيين أو إرجاع قيمة الخطأ المحددة
مصدر
قم بتعيين أو إرجاع اسم الكائن الذي أنشأ الخطأ
استخدم هذه الخصائص للتحقق من الخطأ الذي يحدث. على سبيل المثال ، يمكن اتخاذ تدابير مختلفة بناءً على رقم الخطأ ، أو يمكن توفير معلومات الخطأ للمستخدم مع قيم خاصية المصدر والوصف ، أو نقلها إلى ملف.
يمكنك أيضًا استخدام كائن ERR لإنشاء خطأ. لماذا هذه الأشياء؟ لأنني في بعض الأحيان أرغب في إرسال رسالة خطأ مخصصة إلى المستخدم. يمكن ضبط خصائص كائن ERR على أي قيمة مطلوبة. ثم استدعاء طريقة رفع لإنشاء هذا الخطأ. سيؤدي القيام بذلك إلى إيقاف البرنامج ويمرر الخطأ على طول سلسلة المكالمات.
يوضح المثال التالي كيفية التعامل مع الأخطاء عند قراءة ملف نصي على قرص الخادم. ملاحظة: كيفية استخدام VBObjectError الثابت لتحديد أن رقم الخطأ المحدد لن يتم الخلط بينه وبين رقم الخطأ الحالي. عن طريق إضافة أي رقم خطأ محدد إلى هذا الثابت ، يتم ضمان عدم الخلط بينه وبين أخطاء محددة مسبقًا.
functoin readthisfile (strfilename) 'يعيد المحتوى كسلسلة
عند استئناف الخطأ التالي
Readthisfile = 'قيمة الإرجاع الافتراضي للوظيفة
تعيين objfso = createObject (scripting.filesystemObject)
تعيين objfile = objfso.opentextFile (strfilename ، forreading)
حدد CASE ERR.Number
الحالة 0 'حسنًا ، لا تتخذ أي إجراء
الحالة 50 ، 53 'ملف أو مسار قياسي غير موجود أخطاء
قم بإنشاء قيم خطأ مخصصة ورفع خطأ في سلسلة المكالمات
interrnumber = VBObjecterror 1073 'رقم خطأ مخصص
strerrdescript
مشاركة: كيفية استخدام ASP للحصول على عنوان IP الحقيقي للعميل؟ للحصول على عنوان IP الحقيقي للعميل من خلال خادم الوكيل ، يجب عليك استخدام request.ServerVariables (http_x_forwarded_for) لقراءته. ولكن تجدر الإشارة إلى أنه لا يمكن لكل خادم وكيل استخدام request.ServerVariab