PDA

View Full Version : کنترل تمام خطاهای احتمالی سیستم با یک تابع



once4ever
جمعه 31 فروردین 1386, 12:42 عصر
آیا این امکان وجود داره که یک تابع معرفی کنیم برای هر خطایی که تو سیستم حین اجرا بوجود میاد؟
چیزی مثل try اما بصورت کلی و اینکه تمام خطاها رو در هر سطحی پوشش بده.

omid_Ahmadi
جمعه 31 فروردین 1386, 15:29 عصر
می تونید بلاک try رو در فایل program.cs بنویسید، اما در این صورت موقعیتی که برنامه در اون با خطا مواجه شده از دست میره و بعد از اجرای دستورات اون بلاک، در واقع اجرای برنامه هم از فایل Program.cs ادامه پیدا می کنه.

once4ever
جمعه 31 فروردین 1386, 16:34 عصر
خوب پس این راه خوبی نیست! درست میگم؟
چیزی تو نت پیدا نکردم
اما مطمئنم که یه چیزی برای اینکار گذاشته

omid_Ahmadi
جمعه 31 فروردین 1386, 18:26 عصر
دلیل نمی شه کار خوبی نباشه، به هدفتون و همچنین ساختار برنامه بستگی داره. برای عموم برنامه ها که یه فرم اصلی دارن و مابقی کارها از داخل اون انجام میشه می تونید توی فرم اصلی برنامه، برای هر قسمتی که می خواهید کاری رو انجام بدید، یه بلاک Try قرار بدید تا در صورتی که برنامه در اون قسمت دچار مشکل شد، برنامه فقط از اون متد خارج بشه نه از کل متدهای توی Call Stack.

once4ever
جمعه 31 فروردین 1386, 19:28 عصر
یه بلاک Try قرار بدید تا در صورتی که برنامه در اون قسمت دچار مشکل شد، برنامه فقط از اون متد خارج بشه نه از کل متدهای توی Call Stack.
ممکنه بخاطر یه خطای کوچیک(مثلا تعداد کارکترها) کل اون فرم بسته بشه!
اصلا قابل قبول نیست.
در ضمن وقتی از داخل یک بلاک try عملیاتی از یک کلاس دیگه فراخوانی میشه. دیگه اون بلاک خطاهای اون کلاس پشتیبانی نمیکنه
پس میشه همون استفاده از چندین try

hdv212
جمعه 31 فروردین 1386, 23:32 عصر
خب بستگی داره که شما چه کلاسی رو از لحاظ رخ دادن استثنا (exeption) مدیریت کرده باشید، اگه نوع استثنایی که مدیریت کنید با نوع کلاس یا تابعی که از کلاس دیگه فراخونی شده باشه و ایجاد استثنا کرده باشه مطابقت داشته باشه، اون استثنا مدیریت میشه در غیر اینصورت باعث بروز خطا میشه و برنامه Crash میکنه.

once4ever
شنبه 01 اردیبهشت 1386, 13:35 عصر
فکر کنم متوجه سوال نشدید
خود try و یا اینکه کجاها خطاهارو کنترل کنم سوالم نیست بلکه همچین امکانی وجود داره که بر فرض اول برنامه یه عبارتی بنویسم که مشخص کنم هرجا و به هردلیلی سیستم مجبور شد پیغام خطا بده و یا crash کنه اون تابع اجرا بشه و دیگه پیغام خطای خود سیستم نیاد.
به دلیلهای زیر نمیخوام هرجای سیستم که احتمال دادم ممکنه خطا بده یه try بذارم :
1. کدنویسی خیلی زیاد
2. به هر حالت ممکنه یجارو چک نکرده باشم

ممنون

__H2__
یک شنبه 02 اردیبهشت 1386, 17:42 عصر
سلام
بله امکانش وجود دارد، یک دستگیره عمومی خطا در فریم وروک داریم که هر خطای مدیریت نشده ای را در کل پروژه قلاب میکند و میتوان کنترل دقیق داشت ولی فقط به دلیل "به هر حالت ممکنه یجارو چک نکرده باشم" پیشنهاد میشود و اصلاَ جایگزین مناسبی برای تنبلی و استفاده نکردن از دستور Try نیست.

فرامین زیر را دنبال کنید: (مسیر فرامین را از VB.Net نوشتم ولی احتمالا در #C نیز همین است)
Project->projname property->Appilication->View Appilication Events

رویداد UnhandledException را کد نویسی کنید.