نمایش نتایج 1 تا 5 از 5

نام تاپیک: نکاتی در مورد Exception Handling....

  1. #1
    کاربر دائمی آواتار رها
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    بندرعباس
    سن
    40
    پست
    264

    نکاتی در مورد Exception Handling....

    سلام
    این تاپیک رو به این منظور ایجاد کردم که تجربیات خودم رو در مورد 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 کردن خطاها، نمایش توضیحات مربوط به خطای ایجاد شده و ارسال پیام کامل خطا به ایمیل برنامه نویس پرداخت که خواهش می کنم دوستان آموخته هاشون در این موارد یا هر بحث مفید دیگه ارائه بدهند.

  2. #2
    کاربر دائمی آواتار رها
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    بندرعباس
    سن
    40
    پست
    264

    log کردن خطاها به همراه اطلاعات اضافی

    سلام
    شاید واستون پیش اومده باشه که کاربر نرم افزارتون، باهاتون تماس بگیره و بگه که نرم افزار چند روز قبل یه خطای عجیب غریب داد و بعدش هم بهتون بگه که اصلاً یادش نمی یاد که در چه حالتی این خطا اتفاق افتاد.
    من برای رفع مشکلات از دست در رفته، از سیستم log کردن خطاهای برنامه استفاده می کنم
    این کار چندین حسن داره
    اول اینکه دیگه نیازی نیست به کاربر التماس کرد که بابا تو رو خدا بگو توی کدوم فرم یا در چه مرحله ای خطا رخ داد
    دوم اینکه با استفاده از روش توضیح داده شده در پست قبل بعد از به دام انداختن خطاهای از دست دررفته ،می توان اطلاعاتی در مورد اونها ذخیره کرد تا به موقع به حسابشون رسید
    سوم به طور آماری مشخص می شه که برنامه چقدر پایداره

    من برای اینکار از یک کلاس static استفاده می کنم که متدی برای ذخیره کردن اطلاعات Exception ایجاد شده در فایلهای xml و txt داره.
    یه نمونه پروژه کوچولو که طرز استفاده از این کلاس رو نشون می ده به این پست Attatch کردم

    نکته : بعضی وقتها نباید تمام اطلاعات مربوط به خطای ایجاد شده در فایل ذخیره کرد به خصوص اگر در خطا اطلاعات امنیتی وجود داشته باشه یا خطر وجود رقیب و ... وجود داشته باشه.
    فایل های ضمیمه فایل های ضمیمه

  3. #3

    نقل قول: نکاتی در مورد Exception Handling....

    نقل قول نوشته شده توسط رها مشاهده تاپیک
    سلام
    این تاپیک رو به این منظور ایجاد کردم که تجربیات خودم رو در مورد 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 کردن خطاها، نمایش توضیحات مربوط به خطای ایجاد شده و ارسال پیام کامل خطا به ایمیل برنامه نویس پرداخت که خواهش می کنم دوستان آموخته هاشون در این موارد یا هر بحث مفید دیگه ارائه بدهند.

    من دقیقا همین کار رو میکنم اما باز خطا ها توسط خود vs نمایش داده میشه
    منظور شما خطای پروژه نصب شده روی سیستم کاربر هست یا وقتی داریم برنامه رو تکمیل میکنیم هم مدیریت خطا توسط این متدی که گفتین اجرا میشه؟

  4. #4

    نقل قول: نکاتی در مورد Exception Handling....

    سلام سعید جان
    وقتی برنامه رو از توی ویژوال استودیو run میکنی معلومه که باید ارور خوده ویژوال بالا بیاد. چون تو از دید ویژوال استودیو برنامه نویسی و نه کاربر. اگه شما بری از داخل ویندوز فایل اجرایی رو باز کنی پیغام رو می بینی

  5. #5
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: نکاتی در مورد Exception Handling....

    نقل قول نوشته شده توسط saed2006 مشاهده تاپیک
    من دقیقا همین کار رو میکنم اما باز خطا ها توسط خود vs نمایش داده میشه
    منظور شما خطای پروژه نصب شده روی سیستم کاربر هست یا وقتی داریم برنامه رو تکمیل میکنیم هم مدیریت خطا توسط این متدی که گفتین اجرا میشه؟
    میتونین Mode رو از حالت Automatic به Catch تغییر بدین تا همیشه هندل بشه:

    Application.SetUnhandledExceptionMode(UnhandledExc eptionMode.CatchException);

تاپیک های مشابه

  1. Exception Handling
    نوشته شده توسط shotshat در بخش C#‎‎
    پاسخ: 18
    آخرین پست: سه شنبه 30 مرداد 1386, 15:50 عصر
  2. درباره Error Handling
    نوشته شده توسط hooooman در بخش VB.NET
    پاسخ: 2
    آخرین پست: شنبه 23 تیر 1386, 23:27 عصر
  3. Exception handling
    نوشته شده توسط Amir Oveisi در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 3
    آخرین پست: یک شنبه 24 دی 1385, 10:33 صبح
  4. Exception handling
    نوشته شده توسط mehdi313 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: پنج شنبه 13 مهر 1385, 08:33 صبح
  5. Exception Handling در SQLServer
    نوشته شده توسط m-khorsandi در بخش SQL Server
    پاسخ: 7
    آخرین پست: چهارشنبه 08 تیر 1384, 12:24 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •