Istisno holatlarni qayta ishlash


{ // Istisnoni qayta ishlash



Download 25,4 Kb.
bet3/3
Sana29.01.2022
Hajmi25,4 Kb.
#415469
1   2   3
Bog'liq
1-dars istisno

{
// Istisnoni qayta ishlash
}
Istisno turining nomida qayta ishlanadigan istisno turi koʼrsatiladi va catch-blok aynan shu turdagi istisnoni «ilib» oladi. Аgar istisno ilib olingan boʼlsa, istisno oʼzgaruvchisi istisno turi haqidagi qiymatni qabul qiladi. Аgar istisno haqidagi maʼlumotga zarurat boʼlmasa, istisno oʼzgaruvchisi ishlatilmasligi mumkin. Istisno oʼzgaruvchisi ixtiyoriy turda boʼlishi mumkin. Bunga foydalanuvchi yaratgan sinf turi ham kiradi.
Bitta try-blokdan keyin bir nechta catch-blok kelishi mumkin. Istisno turining nomida nuqtalar boʼlgan catch-blok ixtiyoriy turdagi istisnolarni ilib oladi va u try-blokdan keyin keluvchi catch operatorlar roʼyxatining oxirida kelishi kerak.
Istisno holatni qayta ishlovchi misolni koʼraylik:

namespace try_catch


{
class Program
{
static void Main()
{
int a, b, c;
try
{
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = a / b;
Console.WriteLine("bolinma " + c);
}
catch (DivideByZeroException x)
{
Console.WriteLine("xatolik:" + x.Message +"\n");
Main();
}
catch (FormatException x)
{
Console.WriteLine("xatolik:" + x.Message + "\n");
}
Console.ReadKey();

}
}
Dasturdagi c = a / b; ifoda ististno holatni yuzaga keltirishi mumkin, masalan nolga boʼlish. Funktsiyada yuzaga keladigan istisnoni qayta ishlash uchun ikkita catch-blok aniqlangan. Birinchisida catch (DivideByZeroException x) istisno ilib olinadi. Аgar format turdagi istisno roʼy bersa uni catch (FormatException x) operatori qayta ishlaydi.


Endi bu misolni funksiya azo sifati ko’rishimiz mumkin. try blokini ichida chairilgan funksiya ham himoyalangan bo’ladi.
namespace try_catch
{
class Program
{
static int bulinma(int a, int b) { return a / b; }

static void Main()


{
int a, b, c;
try
{
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("a=");
b = Convert.ToInt32(Console.ReadLine());
c = bulinma(a, b);
Console.WriteLine("c="+c);
}
catch(DivideByZeroException )
{
Console.WriteLine("nol ");
}
catch
{
Console.WriteLine("xatolik ");
}
Console.ReadKey();

}
}
}


Bu misolni class ning funksiya a’zosi sifatida ko’rishimiz mumkin.
class sonlar
{
int a, b;
public sonlar(int _a, int _b) { this.a = _a; this.b = _b; }
public int bulinma(int a, int b) { return a / b; }
}

namespace try_catch


{
class Program
{
static void Main()
{
int a, b, c;
try
{
Console.Write("a=");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("a=");
b = Convert.ToInt32(Console.ReadLine());
sonlar ob = new sonlar(a, b);
c = ob.bulinma(a, b);
Console.WriteLine("c="+c);
}
catch(DivideByZeroException )
{
Console.WriteLine("nol ");
}
catch
{
Console.WriteLine("xatolik ");
}
Console.ReadKey();

}
}
}


Bu misolni vorislikda ko’rishimiz mumkin.


Satr turida berilgan ikkita o’zgaruvchi agar son bo’lsa bo’linma hisoblansin. Bunda tayanch sinfida e’lon qilingan protected int Convert_(string str) { return Convert.ToInt32(str); } funksiyasi satrni songa o’zgartirib beradi. Hosila sinfidagi public int bulinma() { return Convert_(str1) / Convert_(str2); }funksiyasi yuqoridagi funksiyani chaqiradi. Berilgan satrni songa o’girish mumkin bo’lsa bo’linma hisoblanadi aks holda
catch (FormatException)
{
Console.WriteLine("format turidagi xatolik");
}
bloki ishga tushadi va xatolik haqida xabar beradi. Main funksiyasidagi try blokida turgan obyektning tayanch sinfining funksiya a’zolariham himoyalangan bo’ladi.
class Tayanch
{
protected int Convert_(string str) { return Convert.ToInt32(str); }
}
class Hosila : Tayanch
{
string str1, str2;
public Hosila(string _str1, string _str2){ this.str1 = _str1; this.str2 = _str2;}
public int bulinma() { return Convert_(str1) / Convert_(str2); }
}

namespace try_catch


{
class Program
{
static void Main()
{
string str1, str2;
int c;
try
{
Console.Write("a=");
str1 = Console.ReadLine();
Console.Write("b=");
str2 = Console.ReadLine();
Hosila ob = new Hosila(str1, str2);
c = ob.bulinma();
Console.WriteLine("c=" + c);
}

catch (DivideByZeroException)


{
Console.WriteLine("nol ");
}
catch (FormatException)
{
Console.WriteLine("format turidagi xatolik");
}
catch
{
Console.WriteLine("xatolik ");
}
Console.ReadKey();


}
}
}
Download 25,4 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish