02-10-12, 08:10 AM
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كود :
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 لنتعرف عليه
سنجد أن الشرح هو أن الملف غير موجود
والسلام عليكم ورحمة الله وبركاته
