G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon
Download 1.46 Mb.
|
ParVychGafGal (1)
- Bu sahifa navigatsiya:
- AggregateException-da
- DivideByZeroException istisno bolsa
AggregateExceptionIstisno sinfining kichik sinfidir va shuning uchun hammasini ta'minlaydi standart istisno funksiyasi. Bundan tashqari, u 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling