تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مثال] شرح مثال عن (Try-Catch) أقتناص الاخطاء Catching Exceptions
#1
Lightbulb 
السلام عليكم ورحمة الله وبركاته 
#Catching_Exceptions




– من أكثر ألاشياء التي تزعج المبرمج هي توقف النظام عند العميل وضهور هذة الرسالة
على الرغم من أن المبرمج يقوم بعمل تست لوضائف النظام قبل تسليمه للعميل ولا تضهر هذة الرسالة عندة
ولكن تضهر هذة الرسالة عند العميل فقط والسبب في ذالك هو:-
– عدم توفر البرامج الملحقه المشغلة للنظام في جهاز العميل (مثلا جهاز العميل لا يوجد به sqlserver OR Access …).
– العبث بملفات النظام من قبل العميل وعدم توفر هذة الملفات في ملف النظام تضهر هذة الاخطاء.
– ادخال بيانات خاطئه للنظام من قبل العميل لم يتم أحتسابها من قبل المبرمج أو لم تقييد المستخدم بانواع البيانات المدخلة بشكل صحيح.
– غيرة من الاخطاء الغير محتسبة.
لتفادي هذة الاخطاء وعدم ضهور هذة الرسالة عند العميل وتوقف النظام
يمكنك إستخدام لحل ذالكTry{} Catch(Ex){} 
ستقوم بوضع أكواد وظائف النظام بداخل Try{ Code in; }

و عندما يعمل النظام ستقوم ال Try بتنفيذ ما بداخلها من أوامر برمجية وعندما تنفذ كود فية خطاء ستتوقف عند ذالك الكود ولن تنفذ ما بعدة من أوامر برمجية وستنتقل لتنفيذ الاكواد التي بداخل ال Catch(Ex){} دون توقف النظام عن العمل ،
حيث يمكنك وضع كود بداخل ال Catch(Ex){} تضهر رسالة للمستخدم عن وجود خطاء بتفاصيل معينه تكتبها انت أو يمكنك أضهار الرساله التي يعرضها النظام الاساسي عن سبب مشكلة الكود الذي وجد فية خطاء ولم يتم تنفيذة بالشكل التالي :-

كود :
try
{
int[] a = new int[1];
a[1] = 1;
console.writeLine(“no errror”);
}
catch (Exception e)
{
Console.WriteLine(“Method: {0}”, e.TargetSite);
Console.WriteLine(“Message: {0}”, e.Message);
Console.WriteLine(“Source: {0}”, e.Source);
}



كذالك يوجد في ال Try حالة أضافية وهي Finally {} ويتم كتابتها بعد ال Catch(Ex){} و ويتم تنفيذ ما بداخلها في حالة وجود خطأ او لا.
فلنفرض أن نظامك يخزن البيانات في قاعدة البيانات وكود الاضافة يكون بالشكل التالي :-


كود :
Con.Open();
Cmd = new ….Command( (“insert into ….”,Con);
Cmd.ExecuteNonQuery();
Con.Close();


في هاذا الكود إذا حصل خطاء في أمر الاضافة فسوف يقف النظام عن العمل وستظهر رسالة الخطاء ولكن إذا إستخدمنا Try{} Catch(Ex){} فسوف يكون الكود بالشكل التالي :-


كود :
try
{
Con.Open();
Cmd = new ….Command( (“insert into ….”,Con);
Cmd.ExecuteNonQuery();
Con.Close();
}
catch (Exception ex)
{
Con.Close();
MessageBox .Show(“Method: “+ ex.TargetSite +
“\nMessage: “+ ex.Message +
“\nSource: “+ex.Source);
}


في هذا الكود إذا حصل خطاء في أمر الاضافه سيتوقف تنفيذ الاكواد التي بداخل ال Try عند امر الاضافة Cmd.ExecuteNonQuery(); وسيتم تنفيذ ما بداخل ال catch (Exception e) وهو إغلاق الاتصال بقاعدة البيانات وإضهار رسالة بتفاصيل الخطاء التي من قبل النظام الاساسي ولن يتوقف النظام عن العمل.
ولكن لو لاحضت أنه تم كتابة أمر أغلاق الاتصال بقاعدة البيانات Con.Close(); مرتين وذالك مرة في ال Try وأخرى في ال catch (Ex)
ماذا لو كان لديك أكواد لتهيئة شاشة ادخال البيانات لأدخال بيانات جديدة من قبل المستخدم أو أي مهام أخرى سيتطلب منك أن تقوم بكتابة الاكواد مرتين بنفس الشكل طبعا في حال لم تستخدم ال Finally {} ،
ولكن أذا قمت بإستخدامها ستقوم بكتابة الاكواد مرة واحدة فقط بالشكل التالي :-


كود :
try
{
Con.Open();
Cmd = new ….Command( (“insert into ….”,Con);
Cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox .Show(“Method: “+ ex.TargetSite +
“\nMessage: “+ ex.Message +
“\nSource: “+ex.Source);
}
Finally
{
Con.Close();
// Somehing Code
}


مصدر المعلومات :-

الى هنا أعزائنا الكرام نسأل المولى ان قد وفقنا في افادتكم في هذه المعلومات 
وفق الله الجميع
الرد }}}
تم الشكر بواسطة: ahmed_king2023


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مثال عن الشجرة المحاسبية بأداة TreeListView asemshahen5 2 3,334 04-03-24, 09:31 PM
آخر رد: alnagi
  [مثال] مثال انشاء زر دائري Kamil 0 210 08-01-24, 07:39 PM
آخر رد: Kamil
Lightbulb [مثال] شرح مثال عن Overloading Function التحميل الزائد للدوال rabia al hamdani 0 1,217 11-01-23, 11:17 PM
آخر رد: rabia al hamdani
Lightbulb [مثال] شرح مثال عن إستخدام تقنية Static في الأنظمة البرمجية rabia al hamdani 0 777 11-01-23, 11:02 PM
آخر رد: rabia al hamdani
Lightbulb [مثال] شرح مثال عن المسارات المتعددة (MultiThreading) rabia al hamdani 0 766 11-01-23, 10:53 PM
آخر رد: rabia al hamdani
Lightbulb [مثال] شرح مثال عن المفوضات (Delegate) rabia al hamdani 0 855 11-01-23, 10:40 PM
آخر رد: rabia al hamdani
  مثال عن شاشة طلبات المطبخ . asemshahen5 0 1,347 21-11-21, 03:46 PM
آخر رد: asemshahen5
  مثال عن إضافة خصائص و أحداث للادوات . asemshahen5 3 2,427 24-10-21, 10:11 PM
آخر رد: zageteh
  السلام عليكم ورحمة الله و بركاته هذا مثال عن تنشيط المنتج و تشفير السيريال . asemshahen5 5 3,840 15-08-21, 01:05 PM
آخر رد: devante.celvin
  مثال عن الداتا غريد فيو [منقول]. asemshahen5 0 1,698 23-12-20, 08:11 PM
آخر رد: asemshahen5

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم