المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [error handling] البرمجة بوضعية الدفاع: التحكم برسائل الاخطاء وانواعها وطرق معالجتها



romaissa
11-01-2013, بتوقيت غرينيتش 03:15 PM
http://www.dzbatna.com/images/icons/iconrote.gif [error handling] ط§ظ„ط¨ط±ظ…ط¬ط© ط¨ظˆط¶ط¹ظٹط© ط§ظ„ط¯ظپط§ط¹: ط§ظ„طھط*ظƒظ… ط¨ط±ط³ط§ط¦ظ„ ط§ظ„ط§ط®ط·ط§ط، ظˆط§ظ†ظˆط§ط¹ظ‡ط§ ظˆط·ط±ظ‚ ظ…ط¹ط§ظ„ط¬طھظ‡ط§ (http://www.dzbatna.com/t1454201/)



السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
عمتم مساءً
أعود اليكم اليوم بدرس مفصل جديد
أتأمل أن يكون الجميع في صحة وعافية
والان بسم الله نبدأ
وعلى الله نتوكل

عنوان الدرس مفصل:
[error handling] البرمجة بوضعية الدفاع: التحكم برسائل الاخطاء وانواعها وطرق معالجتها
إعداد وتقديم:
أنا أخوكم مهند عيسى
اسم المستخدم: hudaislam.com
الدرس مفصل مقدم لمنتديات ديزاد باتنة معهد كل العرب.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
درس مفصلنا اليوم بإذن الله سيكون حول موضوع الأخطاء البرمجية التي تحصل أثناء بناء وبرمجة التطبيقات، في لغة php
فنحن نعلم اننا أثناء البرمجة قد نغفل عن بعض الأمور التي تسبب مشاكل في عمل البرامج
وتؤدي الى توقف البرنامج
ابحرت في الانترنت لاحصر سبل ووسائل التحكم بهذه الأخطاء ، فرأيت كم هائل من الطرق ، فأحببت أن أقدم لكم أبسط الطرق، وأترك لكم مجال التوسع في الموضوع
وحياكم الله في أي استفسار او مساعدة

في موضوعنا سنتحدث عن الerrors التي تظهر وكيف نتجنبها وكيف نعرضها
ولكن هنالك اتجاه اخر ايضا يسمى الexceptions وهي أخطاء غير متوقعة أيضا تحصل في البرنامج نقوم بمعالجتها عن طريق بلوكات try & cash هذه لن نتناولها في درس مفصلنا الان
لكن ان شاء الله سيأتيها دورها

موضوع درس مفصلنا اليوم سيكون بمثابة إجابة على الأسئلة التالية:


ما هي أنواع الأخطاء في لغات البرمجة؟


ما هي أهم الأخطاء التي نواجهها عندما نبرمج باستخدام لغة PHP؟


ما هي أبسط طرق التعامل مع هذه الأخطاء؟



كل هذه التساؤلات سنجيب عنها بإذن الله
عن طريق أسلوب علمي عملي بسيط سلس
لكن ملاحظة بسيطة قبل البدء، لا بد من قراءة الموضوع كاملا سطرا بسطر حتى تحصل الفائدة المرجوة ان شاء الله

ما هي أنواع الأخطاء في لغات البرمجة؟
جميع الأخطاء البرمجية التي قد يواجهها المبرمج محصورة في ثلاثة تصنيفات من الأخطاء وهي :


syntax errors: وهي الأخطاء الناتجة عن خطأ في كتابة الكود code من حيث نسيان مثلا فاصلة منقوطة او نسيان اغلاق قوس او نسيان علامات الاقتباس في النصوص والخ...

run-time errors: وهي أخطاء تحصل بالبرنامج أثناء التنفيذ، فيحصل شي غير متوقع وغير قادر على المعالجة من تلقاء نفسه، وبالتالي يتوقف العمل.


logical errors: والمقصود بهذه الأخطاء هي الأخطاء في خوارزمية او الية تنفيذ كود code ما ، فلو جئنا مثلا نحسب عملية رياضية معقدة تتطلب جمع رقمين في احد جزئياتها ، ثم جئنا من دون قصد ووضعنا اشارة الطرح بدل الجمع، اي اننا ارتكبنا خطأ في خوارزمية التنفيذ ولكن ليس خطأ في بنية الكود code.



ما هي أهم الأخطاء التي نواجهها عندما نبرمج باستخدام لغة PHP؟






الأخطاء التي قد نواجهها أثناء البرمجة بلغة php مقسمة على الاقل الى 16 تصنيف
نذكر 3 هي التي تظهر بنسبة اكثر من 90% من باقي الأخطاء


وهي :


E_ERROR وهو خطأ كبير لا يمكن التدخل من المعالج لاصلاحه، والنتيجة ايقاف السكربت عن العمل.


E_WARNING وهو تحذير عن خطأ ما ، لكن السكربت سيكمل عملها ولن يتوقف.


E_PARSE : الاخطاء التي تنتج عن مشكلة في كتابة الكود code يعني الفواصل المنقوطة والاقواس والخ، في هذه الحالة البرنامج لن ينطلق أصلا.



ما هي أبسط طرق التعامل مع هذه الأخطاء؟
تخيل لو قمت بعمل تضمين لملف، غير موجود أصلا على السيرفر SERVER
رمز PHP:

<code style="white-space:nowrap"> <code> <?php
$file=fopen("welcome.txt","r");
?> </code> </code>

سيظهر لنا خطأ كالتالي
رمز PHP:

<code style="white-space:nowrap"> <code> Warning: fopen(welcome.txt) &#91;function.fopen&#93;: failed to open stream:
No such file or directory in C:webfoldertest.php on line 2
</code> </code>

ونفس الحال فيما لو قسمنا رقما على صفر
في حال وقعنا في مشكلة مشابهة لهذه ا لمشكلات، يجب علينا التعامل بطريقة جيدة مع هذه الأخطاء

اخترت لكم 3 طرق لكي أشرح طريقةها في التعامل مع هذه الأخطاء
وهي على التوالي:


اخفاء الأخطاء عن المستخدم.


عن طريق جملة joomla die() بسيطة.


عن طريق دالة trigger_error();



نأتي لشرح طريقة الطريقة الأولى:
طريقة اخفاء الأخطاء
تستطيع اخفاء او اظهار اي نوع من الاخطاء، فانا عن طريق سطر واحد برمجي استطيع ان اخفي مثلا الاخطاء واظهر التحذيرات، يمكن اظهرهم جميعا، يمكن اظهرهم جميعا باستثناء نوع معين
كل ذلك يتم عن طريق دالة error_reporting
لاحظ المثال التالي مشروح بالتعليقات
رمز PHP:

<code style="white-space:nowrap"> <code> <?php
error_reporting(0);// اخفاء جميع التحذيرات
error_reporting(E_ERROR | E_WARNING | E_PARSE);// اظهار الانواع الثلاثة الموضحة من الاخطاء
error_reporting(E_ALL ^ E_NOTICE);// اظهار كافة الاخطاء ما عدا E_NOTICE
error_reporting(E_ALL);// اظهار كافة الاخطاء
error_reporting(-1);// اظهار كافة الاخطاء
?> </code> </code>




-=-=-=-=-=--=-=-=-=-=-=-=--=-=-==-=--=-=-==-=-=-=-=-

الأن نأتي للطريقة الثانية وهي طريقة ايقاف البرنامج عن طريق جملة joomla die بسيطة
في مثلا الملف المذكور اعلاه
يمكننا التحقق بكود code بسيط كما هو موضح
رمز PHP:

<code style="white-space:nowrap"> <code> <?php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
?> </code> </code>

الكود code واضح، في حال وجدنا الملف نقوم بتضمينه
في حال لم نجده نقوم بطباعة جملة joomla مناسبة
مثلا الملف غير موجود
اي اننا نتجنب التورط في تضمين الملف قبل التحقق من كونه فعلا موجود

بإمكاننا نستخدم نفس الطريقة في قسمة الرقمين
مثلا
رمز PHP:

<code style="white-space:nowrap"> <code> <?php
if($b==0)
{
die("لا يمكن القسمة على صفر");
}
else
{
$c=$a/$b;
}
?> </code> </code>

اي ان على المبرمج ان يكون مدرك اين سيكون احتمال وقوع الخطأ ويتداركه بجملة joomla die عن طريق معرفة كيفية استخدامها واين يجب ان توضع حتى تضبط هذا الخطا
----------------------------------------------------------------
الطريقة الثالثة تكون عن طريق دالة trigger_error();
فهذه الدالة في المكان الذي نتوقع فيه خطأ
يعني في مكان كلمة die في الامثلة السابقة
نضع دالة trigger error
وهي تأخذ بارامترين
الاول نص الايرور
والثاني هو نوع الايرور
اهم أنواع الاخطاء التي تستخدم في trigger_error هي
E_USER_ERROR
هذه تعمل مثل E_ERROR
لكن كلمة يوزر المضافة تعني انه النص يختاره المبرمج
E_USER_WARNING
هذه مثل التحذير العادي لكن المبرمج يختار النص
E_USER_NOTICE
هذه ملاحظة لكن المبرمج يختار النص

أمثلة على الاستخدام
رمز PHP:

<code style="white-space:nowrap"> <code> <?php
if($b==0)
{
trigger_error("لايمكن القسمة على صفر",E_USER_ERROR);
}
else
{
$c=$a/$b;
}
?> </code> </code>


نفس الطريقة يمكن تطبيقها على مثال تضمين الملف
لكن انت يكمن دورك في تحديد نوع الخطا
هل تريد أن يتوقف البرنامج أم يكمل عمله
ومنا هنا تكمن قوة الدالة

حياكم الله
اي استفسار او مساعدة بالنسبة للدرس مفصل انا جاهز ان شاء الله






ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى