06-10-12, 11:00 PM
كاتب الموضوع : BADRMEDIA
الدرس : تعليم كيفية استخدم الاستثناءات ( Exceptions ) فى لغة الدوت نتالمستوي : مبتدئ
شرح : BADRMEDIA
==================================================
المخضرمين يعلمون أن تصيد الأخطاء اختلف فى الدوت نت وأصبح له شكل أخر عما كان عليه أيام ( VB1:6 )
وهذا الشرح سنجعله مدخل لمن يريد تعلم الاستثناءات ( Exceptions ) فى الدوت نت
كيفية الحصول علي استثناء
للحصول علي استثناء نستخدم القطعة البرمجية Try ... Catch بصفة دائمة عندما يقوم البرنامج بتنفيذ العملية وقد تولد استثناء
ولكى نقوم بذلك نكتب العملية بين العبارة Try و Ctach و بعد العبارة Catch نحصل علي الاستثناءات التى تظهر
كود :
[align=left]Try
Total_Bill= Total_Sale -Tax_tot
Catch Ex as Exception
End Try
[/align]
الجزء Catch هو المسئول عن اظهار الاستثناء والتعامل معه
ويمكن تخصيص Catch لاستثناء محدد معلوم الحدوث
كمثال : استثناء للقسمة على صفر
كود :
[align=left]Try
C = A Mod B
Str_Value = C.ToString()
' هنا خصصنا Catch لنوع القسمة على صفر
Catch Ex as DividedByZeroException
' هنا نظر رسالة الاستثناء فى رسالة للمستخدم
MsgBox("Devided By Zero.")
End Try[/align]
========================================
ومن ضمن تخصيص الاشتثناءات استثناء الغمر والغرق Overflow Exception
كود :
Dim A, B, C As Integer
Try
A= TextBox1.text
B = TextBox2.Text
C = A + B
Catch Ex as OverflowException
MsgBox("Overflow.")
End Try
====================================
مثال أخر - تفتح ملف وتريد تخصيص استثناء لعدم وجوده
كود :
[align=left]
Dim File_Name As New String = "C:\Folder\File.txt
Dim Get_File as new StreamReader
Try
Get_File = New StreamReader( File_Name )
TextBox1.Text = Get_File .ReadToEnd()
Get_File .Close
Catch Ex As FileNotFoundException
MsgBox("File Not Found")
End Try[/align]
===================================
للحصول على أى استثناء دون تخصيص نستخدم
كود :
[align=left]Catch Ex as Exception[/align]
يمكن تخصيص أكثر من استثناء لعملية واحدة
كود :
[align=left]
Try
' العملية
Catch Ex As DirectoryNotFoundException
MsgBox("Error: " & Ex .Message)
Catch Ex As FileNotFoundException
MsgBox("Error: " & Ex .Message)
Catch Ex As Exception
MsgBox("Error: " & Ex .Message)
End Try[/align]
نقطة هامة :
فى العملية السابقة استخدمنا تخصيص خاص وتخصيص عام فى أخر استثناء
عند ظهور استثناء يذهب أولاً للاستثناءات الخاصة وان لم يكن منها يظهر فى العامة
========================================
استخدام Finally :
تستخدم Finally لتنفيذ حدث سواء ظهر الاستثناء أم لم يظهر
كود :
[align=left]
Try
' العملية
Catch Ex As Exception
MsgBox("Error: " & Ex .Message)
Finally
' التعليمات أسفل Finally تنفذ فى كلتا الحالتين
MsgBox("In finally statements")
End Try[/align]
==============================================
استخدام Exit Try
فى حالات لا تريد تنفيذ تنفيذ Try ... Catch
تستخدم Exit Try ليقوم بالانتقال لأول سطر يلى End Try
كود :
[align=left]
Try
' العملية
If Condition Then Exit Try
Catch Ex as Exception
Exit Try
' عملية
[/align]
===========================================
معلومة هامة :
يمكن انشاء استثناءات خاصة بمشروعك
استثناء عبارة عن فئة Class ترث الفئة Exception
والله الموفق لما فيه الخير