![]() |
| |||||||
تتبع وتصيد ومنع الاخطاء(avoiding and handling errors) الجزء الثانى |
| الرئيسية | أضف درس | الجديد | الاكثر شهرة | البحث |
| تتبع وتصيد ومنع الاخطاء(avoiding and handling errors) الجزء الثانى |
| | ||||||
| ||||||
| الأخطاء المنطقية (Logical Errors) إن الأخطاء المنطقية هي الأكثر صعوبة في التتتبع فقد تجد برنامجك يعمل بشكل صحيح وبكل سلامة ولكنه عند نقطة ما لايتم تنفيذها كما تريد أنت ، لنضرب مثلاً على خطأ منطقي بسيط جداً ، لنفرض أنك قمت بعمل نموذج مكون من مربع نص وزر ، عند ضغطك لهذا الزر فأنت تريد أن يتم كتابة كلمة كبير إذا كان الرقم أكبر من 30 وكلمة صغير إذا كان الرقم أصغر من 30 لنقم بكتابة الكود للمثال الأول : كود PHP: كود PHP: سيعمل السيكريبت بشكل صحيح .. ولكن ربما تخطأ أنت في كتابة العلامات المنطقية ( التي باللون الأحمر ) فتأتي النتائج بشكا خاطئ ومن الأخطاء المطنقية الأخطاء التي تقع في وقت التشغيل (Run times error) والتي تكون قد تقوم بإيقاف برنامجك بشكل كامل مثال : كود PHP: وعندها سينتج لك الرسالة التالية وهو المثال الاول الذي ذكرناه سابقا (تقييم العمر) . اخطاء التكرارات قد يكون لديك أيضا تكرار فيه خطأ ولا يقوم بالتوقف نهائياً مثل هذا التكرار : كود PHP: لم نقم بعمل شي يوقف التكرار مثل أن تضع شرط يختبر قيمة المتغير (c$) ثم يقوم بإيقافه عند تعديه رقم معين وعلى ذلك فإن التكرار سيستمر بشكل غير متوقف ولن يعمل البرنامج . عدم ارجاع قيمه من function مثال : كود PHP: الخطا هنا اننا لم نستخدم الـreturn لكي ننهي الدالة أو قد تكون الدالة تحتوي على أكثر من قيمة وننسي أن نقوم بتحديد القيمة النهائية للدالة الخلط في المعاملات الحسابية والمنطقية مثال : If ($y=10) echo 12 ; والمفترض أن تكون : If ($y= =10) echo 12 ; أفكار جيدة لتفادي الأخطاء التعليقات إن من الأفكار الجيدة للتقليل من الأماكن التي تبحث فيها عن الخطأ هو وضع تعليقات لوصف وظيفة دالة معينة . مثال : كود PHP: الدوال وأيضا من الأفكار الجيدة أن تقوم بتقسيم وظائف البرنامج على دوال بحيث أن لكل دالة وظيفتها المعينة : كود PHP: Regular Expressions هذه التقنية تساعدك على تفادي الأخطاء في صفحتك عند حدوثه مثل أن يقوم مستخدم ما بكتابة بريد الكتروني غير صحيح (مثال : a@y@.k.d) هذا البريد غير صحيح ولأجل أن تقوم بمنع حصول أي خطأ مثل ذلك وتقييد العبارات التي يدخلها المستخدم فإنك تقوم بإستخدام الـ RE (Regular Expressions) إنك بالأصح تجعل قواعد للكلمات التي يدخلها المستخدم فمثلاً تجعل المستخدم لايدخل سوي أرقام أو حروف فقط أو شكل معين من الكلمات ، تقوم أولاً بإنشاء نمط للكلمه التي تريد المستخدم أن يقوم بادخالها .النمط (pattren) ماهو النمط ؟ مارأيك إذا كتب المستخدم جملة في مربع نص تحتوي على عدة كلمات وتريد أن تتأكد من وجود كلمة معينة وسط هذه الجملة ، على حسب ما اخذناه من معلومات على المصفوفات سابقاً نستطيع فعل ذلك كالتالى :كود PHP: كود PHP: تقوم الدالة ereg بإعطاء القيمة true إذا تم العثور على الكلمة . في الواقع هناك استخدامات أكثر فعالية للأنماط . يمكننا مثلاً تخزين الكلمة إذا تم وجودها في مصفوفة خاصة كالتالى : كود PHP: ماذا لو أردنا من التأكد من عدة كلمات ، عند ذلك فإننا نفعل التالى : كود PHP: واريد أن أنبهك أن الـereg يقوم بإنشاء المصفوفة من جديد عند كل استعمال له فخذ حذرك من هذه النقط أيضا فإن الـereg حساس لحالة الأحرف لاحظ هذا المثال :كود PHP: لن يقوم بإخراج أي شي فقط لأن حرف الـO مختلف . أيضا يمكنك البحث عن كلمة يسبقها فراغ مثلاً كالتالى : كود PHP: مثال آخر : كود PHP: لاحظ في هذين المثالين أنه مع أن كلمة one غير موجودة بمفردها إنما موجودة كجزء من vcxone و oned ورغم ذلك فإن الدالة لم تأخذ اعتبارا لذلك بينما لو كتبنا كالتالى : كود PHP: فإنه سيبحث عن الكلمة مفصولة عن أي حرف ولن يجد كلمة كذلك فلن يقوم بكتابة أي شي . يمكننا أن نفحص قيمة موجودة في متغير كالتالى : كود PHP: يمكننا بالـ Regular Expression استعمال بعض الأحرف بشكل خاص التي لها استعمالها الخاص بواسطة الـ Regular Expressions الأحرف الخاصة في الـ Regular Expression هي كالتالى : . * ? + [ ] ( ) { } ^ $ | \ هذه الأحرف لها معناها الخاص في الـ Regular Expression فقديماً مثلاً كنا نقول أنه لا يمكننا أن نستخدم علامتي تنصيص متداخلة من نفس النوع كالتالى : كود PHP: ولكي يتجاهل الـPHP هذا المعني فإننا نقوم بوضع (\) قبل علامة التنصيص . ايضا مع الـ ereg فإن للـ( . ) قداستها ولكي يتم تجاهلها فإننا نستخدم الـ(\) تقوم الـ( . ) بأخذ مكان حرف أو فراغ فمثلاً لاحظ المثال التالى : كود PHP: ولكي يتم تجاهل قداسة الـ( . ) في الـ Regular Expressions نقوم بوضع (\) قبلها . مثال : كود PHP: في هذا المثال لن يتم طباعة أي شي لأنه لايوجد أي كلمة تطابق (love....) لأن الـ( .) فقدت قداستها وبدأ التدقيق في الكلمة حرفاً حرفاً . | ||||||
| الكلمات الدليلية: | لا يوجد | |||||
| أرسل الصفحة لصديق | ||||||
| |
| جديد على الموقع؟ | تريد مساعدة؟ |