Istisnolarni qayta ishlash Reja: Favqulodda vaziyatlarni qayta ishlash


Istisnolarni boshqarisha oddiy misol


Download 24.03 Kb.
bet3/3
Sana18.10.2023
Hajmi24.03 Kb.
#1707376
1   2   3
Bog'liq
1.Istisnolarni qayta ishlash (4)

Istisnolarni boshqarisha oddiy misol
Keling, istisnoni kuzatish va ushlashni ko'rsatadigan oddiy misolni ko'rib chiqaylik. Siz bilganingizdek, massivni chegaradan tashqarida indekslashga urinish xatolikka olib keladi. Bu xato ro'y berganda, .NET Framework uchun standart sifatida belgilangan, CLR tizimi IndexOutOfRangeException istisnosini chiqaradi. Quyidagi dasturda bunday istisno qasddan hosil qilinadi va keyin ushlanadi.
// Istisnolarni boshqarishni ko'rsating.
using System;
class ExcDemol {
static void Main() {
int[] nums = new int[4];
try {
Console.WriteLine("Istisno qilishdan oldin.");
// Indeks tufayli massiv chegarasidan tashqarida istisno qilish.
for(int i=0; i < 10; i++) {
nums[i] = i;
Console.WriteLine("nums[{0)]: {1}", i, nums[i]);
}
Console.WriteLine("Qabul qilish shart emas ");
}
catch (IndexOutOfRangeException) {
// Istisno holatini bilib oling.
Console.WriteLine("Indeks massiv chegarasidan tashqarida!");
}
Console.WriteLine("Istisnoni holatini aniqlash uchun blokdan keyin.");

}
}
Bu dastur bajarilganda quyidagi natijaga erishiladi.


Istisno qo'yilishidan oldin.
nums[0]: 0
nums[1]: 1
nums[2]: 2
nums[3]: 3
Indeks massiv chegarasidan tashqarida!
Istisno holatini aniqlash uchun blokdan keyin.
finally blokdan foydalanish
Ba'zan try / catch blokidan chiqqandan keyin ishlaydigan kod blokini aniqlash kerak bo'ladi. istisno holat yuzaga kelishi mumkin xato tufayli joriy usul muddatidan oldin qaytadi. Biroq, bu usul yopilishi kerak bo'lgan faylni ochishi yoki yopilishi kerak bo'lgan tarmoq ulanishi o'rnatilishi mumkin edi. Bunday holatlar dasturlashda kamdan -kam uchraydi, shuning uchun ularni C #da hal qilishning qulay usuli bor: final blokidan foydalaning. Try / catch blokidan keyin bajariladigan kod blokini belgilash uchun finally blokini try / catch ketma -ketligining oxiriga kiritish kifoya. Quyida try / catch va finally bloklarini birgalikda ishlatishning umumiy shakli keltirilgan.
try {
// Xatolarni tuzatish uchun kodlar bloki.
}
catch (ExcepType1 exOb) {
// ExcepType1 turidagi istisno ishlovchisi.}
catch (ExcepType2 ехОb) {
// ExcepType2 turidagi istisno ishlovchisi.
}
finally {
// Istisno ishlashni tugatish kodi .
}
finally bloki try / catch bloki chiqishiga sabab bo'lgan sabablardan qat'i nazar bajariladi. Bu shuni anglatadiki, agar try bloki odatdagidek bajarilsa yoki istisno tufayli, finally blokda ko'rsatilgan kod oxirgi bajariladi. finally bloki, agar try blokidagi yoki u bilan bog'liq catch bloklaridagi har qanday kod usuldan qaytishga olib keladigan bo'lsa, bajariladi.
Quyida finally blokidan foydalanishga misol keltirilgan.
// Final blokidan foydalaning.
using System;
class UseFinally {
public static void GenException(int what) {
int t;
int[] nums = new int[2];
Console.WriteLine("Qabul qilish " + what);
try {
switch(what) {
case 0:
t = 10 / what; // nolga bo'linish tufayli xato hosil qiling
break;
case 1:
nums[4] = 4; // massiv indekslash xatosini yaratish
break;
case 2:
return; // try blokidan qaytish
}
}
catch (DivideByZeroException) {
Console.WriteLine("Nolga bo’lish mumkin emas!");
return; // catch blokidan qaytish
}
catch (IndexOutOfRangeException) {
Console.WriteLine("Hech narsa topilmadi.");
}
finally {
Console.WriteLine("Try blokidan chiqqandan keyin.");
}
}
... }
class FinallyDemo {
static void Main() {
for(int i=0; i < 3; i++) {
UseFinally.GenException(i);
Console.WriteLine();
}
}
}
Bu dasturni ishga tushirish natijasidir.
Qabul qilish 0
Nolga bo’lish mumkin emas
Try blokidan chiqqandan keyin.

Qabul qilish 1


Hech narsa topilmadi.
Try blokidan chiqqandan keyin.

Qabul qilish 2


Try blokidan chiqqandan keyin.

Foydalanildi:
1. Герберт Шилдт. С# 4.0: полное руководство. Пер. с англ. — М.: ООО "И.Д. Вильяме", 2011.
Download 24.03 Kb.

Do'stlaringiz bilan baham:
1   2   3




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