(Try-Catch) أقتناص الاخطاء 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
}
الى هنا أعزائنا الكرام نسأل المولى ان قد وفقنا في افادتكم في هذه المعلومات 👨‍🏫
وفق الله الجميع💜🙌

أضف تعليق

هذا الموقع يستخدم خدمة أكيسميت للتقليل من البريد المزعجة. اعرف المزيد عن كيفية التعامل مع بيانات التعليقات الخاصة بك processed.

موقع ويب مدعوم بواسطة ووردبريس.كوم. قالب: Baskerville 2 بواسطة Anders Noren.

أعلى ↑

تصميم موقع كهذا باستخدام ووردبريس.كوم
ابدأ