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

نام تاپیک: All exception

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران - تهرانپارس
    پست
    79

    All exception

    دوستان میتونیم دسترسی به همه خطاهایی که رخ داده داشته باشیم؟ مثلا تو کلاس پدر خطای رخ داده و از کلاس فرزند متوجه اون بشیم

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: All exception

    نقل قول نوشته شده توسط meysam_212 مشاهده تاپیک
    دوستان میتونیم دسترسی به همه خطاهایی که رخ داده داشته باشیم؟ مثلا تو کلاس پدر خطای رخ داده و از کلاس فرزند متوجه اون بشیم
    تا جایی که من میدونم Exception ها در method رخ میدن و یا خودشون اون رو هندل میکنن یا به متدی میفرستن که اون متد رو فراخوانی کرده. پس یه حالت "برگشتی" داره و رو به جلو نیست. و در نهایت اگر هیچ کدوم از متدها اون رو catch نکنن خود jvm در متد main اون رو catch میکنه و trace اون رو چاپ میکنه.
    البته راه برای اینکه همه خطاها رو جمع آوری کنید وجود داره. از کتابخونه ای مثل Log4j استفاده کنید یا خودتون میتونید پیاده سازی هایی رو انجام بدید که همه رو یه جا جمع آوری کنید.

    اما اینکه خطاهای کلاس پدر در کلاس فرزند گرفته بشه، اگر درستترش بگیم اگر شیء ای از کلاس فرزند داشته باشیم که خطایی در متد این شیء رخ بده (در کلاس پدر) و همچنین کلاس پدر اون رو catch نکرده باشه و شما در کلاس فرزند فراخوانی کنید، بله دسترسی دارید. در کل ارتباطی به کلاس نداره همونطور که گفتم Exception از طریق فراخوانی متدها مسیرش مشخص میشه

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران - تهرانپارس
    پست
    79

    نقل قول: All exception

    تشکر
    فرض کنیم کلاس پدر متد ابسترکتی صدا زده میشه که قبل و بعد از فراخوانی هم عملیات خودش رو داره، در نهایت این متد از فرزند ریترن میشه و بعد از اون خطا رخ میده، دسترسی به کد پدر نیست، دسترسی به متد main وجود نداره، متدی از متدهای پدر رو صدا نمیزنم. با این حال، امکان داره همچنان؟
    یه چیزی مثل application event

  4. #4
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: All exception

    جمله اولتون مفهوم نیست. ولی اگر منظورتونه متد abstract صدا زده بشه از اونجایی که متد abstract رو باید پیاده سازی کنید در نتیجه اونجایی که پیاده سازی میشه Exceptionهاش گرفته میشه.
    فکر میکنم شما اینجا به اشتباه خودتون رو درگیر کلاس parent و child کردید. در کل فرض کنید شما یک کلاس دارید (مهم نیست رابطه parent-child داشته باشند) که یک متد از یک کتابخانه رو فراخوانی میکنه. اگر در اون متد هر exception ای که throw میشه catch هم شده باشه، اونوقت شما در هر کلاسی به اون دسترسی ندارید (چون catch شده و تمام)

    ولی معمولا کتابخونه هایی که خوب نوشته بشن، خیلی از Exceptionها رو catch نمیکنن تا کاربر بتونه عملیات لازم رو انجام بده. برای اینکار به جای اینکه در متد خودشون catch کنن در تعریف متد به این صورت مینویسن:

    public void doSth() throws IOException, NullPointerException{
    ...
    }

    در این حالت هر جا شما متد doSth رو فراخوانی کنید یا این Exception ها رو باید catch کنید یا در اون متد فراخوانی کننده باز باید بالاش throw IOException,... بنویسید تا به فراخوانی کننده اون ارسال بشه. و همونطور که گفتم در نهایت اگر در متد main هم catch نشه توسط jvm گرفته میشه و خطاها نمایش داده میشه

    موفق باشید

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

  1. خطا : An unhandled exception of type 'System.Data.OleDb.OleD
    نوشته شده توسط tazekar در بخش C#‎‎
    پاسخ: 7
    آخرین پست: شنبه 26 شهریور 1390, 21:06 عصر
  2. not all code pathes return value
    نوشته شده توسط faramarz_s در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: پنج شنبه 03 مهر 1382, 11:44 صبح
  3. Getting all IP addresses !
    نوشته شده توسط Farhad.B.S در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: یک شنبه 09 شهریور 1382, 14:22 عصر
  4. مشکل Database Exception
    نوشته شده توسط v_shalchian در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 5
    آخرین پست: جمعه 17 مرداد 1382, 18:10 عصر
  5. C#‎‎ Builder for All
    نوشته شده توسط در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: چهارشنبه 25 تیر 1382, 14:21 عصر

برچسب های این تاپیک

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

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