رها
شنبه 13 بهمن 1386, 16:54 عصر
سلام
این تاپیک رو به این منظور ایجاد کردم که تجربیات خودم رو در مورد Exception Handling منتقل کنم
البته از دوستان دیگر هم تقاضا دارم تجربیات خودشون رو در همین تاپیک قرار بدن تا به امید خدا یه تاپیک مفصل و جامع در مورد این مبحث ایجاد بشه...
در اولین قدم من به سرغ خطاهایی می رم که به هر دلیل از دست برنامه نویس فرار می کنند. همونجوری که می دونید ما به کمک بلوک try ،کدهامون رو جوری می نویسم که در صورت ایجاد خطا ، در قسمت except اونها رو مدیریت کنیم و پیام مناسبی رو به کاربر برنامه بدیم
اما خوب به هردلیل ممکنه این بلوک توسط برنامه نویس در یک قسمت ایجاد نشه و باز همونطوری که می دونید در صورت بروز خطا در اون قطعه کد، دات نت فریم ورک با نمایش پیام، بروز خطا رو نشون می ده.
برای جلوگیری از این نمونه خطاها که به Unhandled Exception معروف هستند من راهکار زیر رو به کار بردم.
مراحل زیر رو برای به دام انداختن اینگونه خطاها طی کنید :
در فایل program.cs مربوط به پروژه بعد از دستورات زیر
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
دستور زیر رو قرار بدید
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadExce ption);
و در همون فایل program.cs متدی با همان نامی که در سازنده بالا دادید باید ایجاد کنید مثل متد زیر
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show("خطا در اجرای دستور کاربر", "خطا");
}
از این به بعد در صورتی که خطایی در قطعه کدی از برنامه رخ بده که درون بلوک try قرار نداشته باشه به این متد فرستاده می شه و دیگه پیام پیش فرض دات نت فریم ورک نمایش داده نمی شه.
نکته : آرگومان e در متد فوق حاوی Exception ایجاد شده می باشد که از آن می توان استفاده های مختلفی کرد.
این از اولین قدم.
در ادامه این مبحث می توان به مباحثی مثل log کردن خطاها، نمایش توضیحات مربوط به خطای ایجاد شده و ارسال پیام کامل خطا به ایمیل برنامه نویس پرداخت که خواهش می کنم دوستان آموخته هاشون در این موارد یا هر بحث مفید دیگه ارائه بدهند.
این تاپیک رو به این منظور ایجاد کردم که تجربیات خودم رو در مورد Exception Handling منتقل کنم
البته از دوستان دیگر هم تقاضا دارم تجربیات خودشون رو در همین تاپیک قرار بدن تا به امید خدا یه تاپیک مفصل و جامع در مورد این مبحث ایجاد بشه...
در اولین قدم من به سرغ خطاهایی می رم که به هر دلیل از دست برنامه نویس فرار می کنند. همونجوری که می دونید ما به کمک بلوک try ،کدهامون رو جوری می نویسم که در صورت ایجاد خطا ، در قسمت except اونها رو مدیریت کنیم و پیام مناسبی رو به کاربر برنامه بدیم
اما خوب به هردلیل ممکنه این بلوک توسط برنامه نویس در یک قسمت ایجاد نشه و باز همونطوری که می دونید در صورت بروز خطا در اون قطعه کد، دات نت فریم ورک با نمایش پیام، بروز خطا رو نشون می ده.
برای جلوگیری از این نمونه خطاها که به Unhandled Exception معروف هستند من راهکار زیر رو به کار بردم.
مراحل زیر رو برای به دام انداختن اینگونه خطاها طی کنید :
در فایل program.cs مربوط به پروژه بعد از دستورات زیر
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
دستور زیر رو قرار بدید
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadExce ption);
و در همون فایل program.cs متدی با همان نامی که در سازنده بالا دادید باید ایجاد کنید مثل متد زیر
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show("خطا در اجرای دستور کاربر", "خطا");
}
از این به بعد در صورتی که خطایی در قطعه کدی از برنامه رخ بده که درون بلوک try قرار نداشته باشه به این متد فرستاده می شه و دیگه پیام پیش فرض دات نت فریم ورک نمایش داده نمی شه.
نکته : آرگومان e در متد فوق حاوی Exception ایجاد شده می باشد که از آن می توان استفاده های مختلفی کرد.
این از اولین قدم.
در ادامه این مبحث می توان به مباحثی مثل log کردن خطاها، نمایش توضیحات مربوط به خطای ایجاد شده و ارسال پیام کامل خطا به ایمیل برنامه نویس پرداخت که خواهش می کنم دوستان آموخته هاشون در این موارد یا هر بحث مفید دیگه ارائه بدهند.