G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon


Download 1.46 Mb.
bet47/85
Sana24.12.2022
Hajmi1.46 Mb.
#1062519
1   ...   43   44   45   46   47   48   49   50   ...   85
Bog'liq
ParVychGafGal (1)

AggregateException


Istisno sinfining kichik sinfidir va shuning uchun hammasini ta'minlaydi standart istisno funksiyasi. Bundan tashqari, u

shunday mulkka ega
o'z ichiga oladi
yig'ish
maishiy

istisnolar. Parallel tsiklni chaqirganda, barcha bog'liq istisnolar barcha istisnolar ma'lumotlari bo'lmasligini ta'minlab, mulkka kiritilgan
yo'qolgan.

Birinchi namoyish uchun biz parallel halqa yaratamiz istisno qiladi. Biz bilamizki, istisno o'raladi AggregateException-da biz faqat atributlarni ushlaymiz Aggregate istisnolar. For tsikli qiymatlar orqali iteratsiya ostida


-10 dan 9 gacha. Har bir qiymat oddiyda bo'luvchi sifatida ishlatiladi arifmetik amal. Qiymat nolga teng bo'lganda, bo'linadi
null va istisno tashlanadi.
77

Machine Translated by Google


harakat qilib ko'ring


{
Parallel.For(-10, 10, i =>
{
Console.WriteLine("100/ {0}={1}", i, 100 / i);
});
}
catch (AggregateException ex)
{


Console.WriteLine(ex.Message);
}
Konsol chiqishi: bir yoki bir nechta xatolik yuz berdi.
Jarayonning qaysidir nuqtasida bo'linish bo'lganini ko'rishingiz mumkin
null va tsikl to'xtatilgandan so'ng istisno o'rnatildi
AggregateException va uning Message xususiyati xulosa qilinadi . Xabar oddiy
AggregateException bir yoki bir nechtasini o'z ichiga olganligini bildiradi bir nechta ichki istisnolar. Agar biz qo'lga olishga harakat qilsak DivideByZeroException istisno bo'lsa , istisno ishlanmaydi.
Yuqoridagi natijalarni ko'rish va qachon ekanligini tushunish mumkin emas haqiqatan ham istisno sodir bo'ldi. Ketma-ket tsiklda biz qila olardik
Bu oxirgi qayta ishlangan iteratsiya paytida bo'lgan deb taxmin qiling, lekin ichida parallel tsiklda bu to'g'ri bo'lmasligi mumkin. Haqiqatan ham nima ekanligini tushunish uchun sodir bo'lsa, biz kodga qo'shimcha qator qo'shishimiz mumkin
qachon nolga bo'lishimizni aytadi. Ko'rsatish uchun kodni o'zgartiraylik
istisnodan oldin xabar:


harakat qilib ko'ring


{
Parallel.For(-10, 10, i =>
{
78
Machine Translated by Google

});
}
if (i == 0) Console.WriteLine("Nolga bo'lish haqida."); Console.WriteLine("100/ {0}={1}", i, 100 / i);

catch (AggregateException ex)
{
Console.WriteLine(ex.Message);
}
Biz istisno jarayonning boshida, keyin sodir bo'lganini ko'ramiz
chunki faqat ikkita hisoblash natijasi ko'rsatilgan. Boshqa hisob-kitoblar

ilgari rejalashtirilgan dastlabki bartarafdan keyin sodir bo'lgan


tsiklning takrorlanishi.





Download 1.46 Mb.

Do'stlaringiz bilan baham:
1   ...   43   44   45   46   47   48   49   50   ...   85




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