تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
اغتنم أكوادك
#7

7. التعامل مع الأخطاء:

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

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

فمن الأفضل تجاوز هذه الصورة وإخراجها بمظهر أجمل باستخدام Try


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

فتح صورة من مسار معين نستخدم الكود التالي:


كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

PictureBox1.Image = System.Drawing.Bitmap.FromFile("D:\selverligt.bmp")

End Sub
الآن بفرض عدم وجود الصورة فعند الضغط على الزر ستكون النتيجة التالية:


الآن سنقوم بعملية تجميل لرسالة الخطأ ومعرفة نوع الخطأ:

سنستخدم Try ... Catch وهنا بعمل استثناء غير معالج و الأفضل طبعا المعالجة لكن إذا أردنا فقط إجراء هذا الاستثناء للحصول على الخطأ و رقمه في أثناء البرمجة لمعالجته لاحقاً أو لإرشاد المستخدم للبرنامج حول كيفية التعامل مع الخطأ كون الرسالة الظاهرة ستحمل دلالات الإصلاح.

أولا نتابع بالشكل الاعتيادي للخطأ

بعد استخدام Try سيصبح الكود كالتالي :

كود :
Try

PictureBox1.Image = System.Drawing.Bitmap.FromFile("D:\File.bmp")

Catch

MsgBox("لقد حصل خطأ الرجاء الاتصال بالاخ سيلفر لايت")

End Try
فالناتج الجديد للخطأ سيكون التالي :


لاحظ الفرق بين الرسالتين



الآن سنجري استثناء غير معالج بالطريقة التالية سنقوم بإضافة Module و بعدها نضيف فيه التصريح التالي

كود :
Public Sub UnhandledExceptionHandler()

'Show an error message to the user.

MsgBox("An error occurred. Error Number: " & Err.Number & _

" Description: " & Err.Description & " Source: " & Err.Source)

End Sub
ونعد للنموزج ونغير catch ليصبح الاتصال بالتصريح عند أي خطأ ويصبح الكود كالتالي:

كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try

PictureBox1.Image = System.Drawing.Bitmap.FromFile("D:\File.bmp")

Catch

UnhandledExceptionHandler()

End Try

End Sub
جرب البرنامج وستظهر رسالة الخطأ التالية :

تحوي النافذة على رقم الخطأ و وصف الخطأ ومصدر الخطأ

وهذا يسهل لك معالجة أخطاء برنامجك

دالة ErrorToString : تستطيع من خلال الدالة إرجاع القيمة النصية للخطأ من رقمه فمثلا رقم الخطأ السابق هو الرقم 53ماذا يعني سنكتشف ذلك من خلال الدالة :

نقوم بإنشاء مشروع جديد نحتاج فيه لقائمة ListBox و زر أمر Button ونضع الكود التالي لزر الأمر:

كود :
Dim s As Integer

For s = 1 To 1000

ListBox1.Items.Add(ErrorToString(s).ToString + s.ToString)

Next

نقوم بتشغيل البرنامج ونضغط على الزر لنجد أن القائمة امتلأت من الرقم 1 إلى 1000 وبجانب كل رقم شرح الخطأ نذهب للرقم 53 لنتعرف عليه

سنجد أن الشرح هو أن الملف غير موجود



والسلام عليكم ورحمة الله وبركاته
}}}
تم الشكر بواسطة: نبيل جعران


الردود في هذا الموضوع
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 07:53 AM
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 07:57 AM
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 07:59 AM
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 08:01 AM
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 08:02 AM
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 08:07 AM
اغتنم أكوادك - بواسطة Raggi Tech - 02-10-12, 08:10 AM

التنقل السريع :


يقوم بقرائة الموضوع: