Kia_MLS
سه شنبه 06 اردیبهشت 1390, 19:15 عصر
با سلام خدمت همه دوستان و اساتید محترم
همانطور که همه شما میدونید ابتدایی ترین روش برای مدیریت خطا استفاده از ساختار try ... catch ... finally است.
فرض کنید میخوایم در برناممون این امکان رو اضافه کنیم که هر خطایی در برنامه بوجود اومد، توضیحات و تاریخ رخ دادن خطا رو در یک فایل متنی ذخیره کنیم.
اگر برای مدیریت خطاهای برنامه از ساختار try ... catch ... finally استفاده کنیم، در بهترین حالت مجبوریم هرکجا که catch نوشتیم یک خط کد هم اضافه کنیم که توضیحات مربوط به خطای بوجود آمده رو ثبت کنه.
به نظر این کار منطقی میاد اما اگه پروژه بزرگ باشه و تعداد try ... catch ... finally زیاد باشه باز هم این روش مناسبه؟ :متفکر:
سوالی که من از اساتید محترم داشتم اینه:
آیا راهی هست که رخ دادن هر خطایی در برنامه رو مثل مابقی رویدادها override کنیم؟
در واقع به ساختار try ... catch ... finally مثل یک Event معمولی نگاه کنیم و کلاسی بنویسیم که رویداد catch رو Override بکنه، ابتدا دستورات دلخواه ما رو اجرا کنه و بعد سراغ دستورات نوشته شده در قسمت catch بره؟
جهت یادآوری عرض میکنم:
گزینه های OnApplicationError در فایل Global.asax و CustomError در WebConfig قابل قبول نیستند. چون در 2 فایل ذکر شده زمانی یک خطا Handle میشه که در سطوح پایین تر مدیریت نشده باشه.
به عبارت دیگه اگر در برنامه از کدهایی شبیه به این استفاده شده باشه:
try
{
int i = 100 / 50;
i -= 2;
int j = 100 / i;
}
catch
{
this.Title = "Error";
}
در این صورت رویداد OnApplicationError در Global.asax یا CustomError در WebConfig اتفاق نخواهد افتاد.
همانطور که همه شما میدونید ابتدایی ترین روش برای مدیریت خطا استفاده از ساختار try ... catch ... finally است.
فرض کنید میخوایم در برناممون این امکان رو اضافه کنیم که هر خطایی در برنامه بوجود اومد، توضیحات و تاریخ رخ دادن خطا رو در یک فایل متنی ذخیره کنیم.
اگر برای مدیریت خطاهای برنامه از ساختار try ... catch ... finally استفاده کنیم، در بهترین حالت مجبوریم هرکجا که catch نوشتیم یک خط کد هم اضافه کنیم که توضیحات مربوط به خطای بوجود آمده رو ثبت کنه.
به نظر این کار منطقی میاد اما اگه پروژه بزرگ باشه و تعداد try ... catch ... finally زیاد باشه باز هم این روش مناسبه؟ :متفکر:
سوالی که من از اساتید محترم داشتم اینه:
آیا راهی هست که رخ دادن هر خطایی در برنامه رو مثل مابقی رویدادها override کنیم؟
در واقع به ساختار try ... catch ... finally مثل یک Event معمولی نگاه کنیم و کلاسی بنویسیم که رویداد catch رو Override بکنه، ابتدا دستورات دلخواه ما رو اجرا کنه و بعد سراغ دستورات نوشته شده در قسمت catch بره؟
جهت یادآوری عرض میکنم:
گزینه های OnApplicationError در فایل Global.asax و CustomError در WebConfig قابل قبول نیستند. چون در 2 فایل ذکر شده زمانی یک خطا Handle میشه که در سطوح پایین تر مدیریت نشده باشه.
به عبارت دیگه اگر در برنامه از کدهایی شبیه به این استفاده شده باشه:
try
{
int i = 100 / 50;
i -= 2;
int j = 100 / i;
}
catch
{
this.Title = "Error";
}
در این صورت رویداد OnApplicationError در Global.asax یا CustomError در WebConfig اتفاق نخواهد افتاد.