Sobes.tech
Junior

შეიძლება თუ არა C#-ში რამდენიმე catch ბლოკი გამონაკლისების მართვისთვის?

sobes.tech AI

პასუხი AI-სგან

Այո, կարող է լինել մի քանի catch բլոկ։ Սա թույլ է տալիս տարբեր կերպ մշակել տարբեր տեսակի արտահայտություններ։

Երբ տեղի է ունենում արտահայտություն, CLR-ը հերթականորեն ստուգում է catch բլոկները վերևից ներքև, սկսած առաջինից։ Առաջին catch բլոկը, որի արտահայտության տիպը համընկնում է արտահայտության առաջացած տիպին կամ նրա հիմք դասին, կատարվում է։

try
{
    // Կոդ, որը կարող է արտահայտություն առաջացնել
}
catch (ArgumentNullException ex)
{
    // ArgumentNullException արտահայտության մշակումը
}
catch (IndexOutOfRangeException ex)
{
    // IndexOutOfRangeException արտահայտության մշակումը
}
catch (Exception ex)
{
    // Բոլոր մյուս արտահայտությունների մշակումը (հիմք դասը Exception)
    // Այս բլոկը սովորաբար տեղադրվում է վերջին
}
finally
{
    // Կոդ, որը միշտ կիրականացվի, անկախ նրանից, արտահայտություն է եղել թե ոչ
}

Մեծ կարևորություն ունի catch բլոկները դասավորել ավելի հատուկ տիպերի արտահայտություններից դեպի ավելի ընդհանուր (հիմք դասեր)։ catch (Exception ex) բլոկը պետք է լինի վերջինը, քանի որ այն բռնում է բոլոր արտահայտությունները։