• CarlsDeadException va ArgumentOutOfRangeException
  • Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr




    Download 6,33 Mb.
    Pdf ko'rish
    bet184/194
    Sana20.02.2024
    Hajmi6,33 Mb.
    #159185
    1   ...   180   181   182   183   184   185   186   187   ...   194
    TargetSite -
    xossa faqatgina o‘qilish imkoniga ega bo‘lib, obektni Messageda 
    ko‘p sonli detallari bilan qaytaradi
    Amaliy mashg‘ulot 
    Bir nechta catch bloklarni yozganimizda shu narsani e’tiborga olishimiz 
    kerakki istisno xolat birinchi catch blok orqali qayta ishlanadi. Misol tariqasida, 
    birinchi catch bloki nima ekanligini ko‘rsatish uchun avvalgi misolga yana bitta 
    CarlsDeadException va ArgumentOutOfRangeException dan tashqari barcha 
    istisnolarni tutib olmoqchi bo‘lgan catch blokini qo‘shamiz. 
    // This code will not compile! 
    static
    void
    Main(
    string
    [] args)
    {
    Console.WriteLine(
    "***** Handling Multiple Exceptions 
    *****\n"
    );


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    322 
    Car myCar = 
    new
    Car(
    "Rusty"
    , 90);
    try
    {
    // Trigger an argument out of range exception. 
    myCar.Accelerate(-10);
    }
    catch
    (Exception e)
    {
    // Process all other exceptions? 
    Console.WriteLine(e.Message);
    }
    catch
    (CarIsDeadException e)
    {
    Console.WriteLine(e.Message);
    }
    catch
    (ArgumentOutOfRangeException e)
    {
    Console.WriteLine(e.Message);
    }
    Console.ReadLine();

    Bu istisnolarni qayta ishlash mantig‘i kompilyatsiya bosqichida xatolikka olib 
    keladi. Muammo shundaki, birinchi catch bloki System.Exception xatoligidan 
    tashqari barcha istisnolarni qayta ishlay oladi, CarlsDeadException va 
    ArgumentOutOfRangeException larni ham. Oxirgi 2ta catch bloki imkonsizdir. 
    Bitta empirik qoidani yodda saqlang: catch bloklarini shunday joylashtirish 
    kerakki, birinchi catch eng maxsus istisnolarni, oxirgi catch esa umumiyroq 
    istisnolarni qayta ishlashi kerak. 
    Shunday qilib, agar ixtiyoriy istisnolarni qayta ishlaydigan catch blokini 
    aniqlaydigan bo‘lsak, u quyidagicha aniqlanadi: 
    // This code compiles just fine. 
    static
    void
    Main(
    string
    [] args)
    {
    Console.WriteLine(
    "***** Handling Multiple Exceptions 
    *****\n"
    );


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    323 
    Car myCar = 
    new
    Car(
    "Rusty"
    , 90);
    try
    {
    // Trigger an argument out of range exception. 
    myCar.Accelerate(-10);
    }
    catch
    (CarIsDeadException e)
    {
    Console.WriteLine(e.Message);
    }
    catch
    (ArgumentOutOfRangeException e)
    {
    Console.WriteLine(e.Message);
    }
    // This will catch any other exception 
    // beyond CarIsDeadException or 
    // ArgumentOutOfRangeException. 
    catch
    (Exception e)
    {
    Console.WriteLine(e.Message);
    }
    Console.ReadLine();

    // A generic catch. 
    static
    void
    Main(
    string
    [] args)
    {
    Console.WriteLine(
    "***** Handling Multiple Exceptions 
    *****\n"
    );
    Car myCar = 
    new
    Car(
    "Rusty"
    , 90);
    try
    {
    myCar.Accelerate(90);
    }
    catch
    {
    Console.WriteLine(
    "Something bad happened..."
    );
    }
    Console.ReadLine();


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    324 


    Download 6,33 Mb.
    1   ...   180   181   182   183   184   185   186   187   ...   194




    Download 6,33 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr

    Download 6,33 Mb.
    Pdf ko'rish