tomonidan
chiqarilgan maxsus istisno (3-toifa, 4-toifa) )? • Qanday qilib sabab
innite halqaga olib keldi — bu to'g'ridan-to'g'ri ma'lumotlarni
tayinlash (1-toifa) yoki nazorat-ow o'zgarishi (3-toifa) yoki bilvosita ma'lumotlar va boshqaruv ow (2-tur, 4-tur) orqalimi?
13-rasmda bir nechta ma'lumotlarni o'z ichiga olgan buzilgan
ma'lumotlar tarkibi bilvosita aylanish bosqichiga ta'sir qilishiga misol ko'rsatilgan.
1-tur: I/U operatsiyalari tomonidan qaytarilgan xato kodlari to'g'ridan-
to'g'ri aylanish bosqichlariga ta'sir qiladi. Ushbu tur uchun pastadir
qadami to'g'ridan-to'g'ri I/U operatsiyasining qaytish qiymati bilan
imzolanadi. Innite tsikli, noto'g'ri ma'lumotlarning buzilishi tufayli
kutilmagan xato kodi qaytarilganda paydo bo'ladi. Misol uchun, 11-rasmda
ko'rsatilganidek, log le (InputStream in ÿ183 qator) noto'g'ri kodlash
(Yarn-2724) yoki buzilish tarqalishi (Yarn-7179) tufayli buzilgan bo'lsa,
InputStream in null bo'ladi. skip () funktsiyasi EOF indikatori -1 o'rniga 0
ni qaytaradi (185-qator). Qaytish qiymati ret ÿ189 qatorda qadam sifatida
ishlatiladi, bu esa len hech qachon yangilanmaydi, lekin har doim pastki
chegaradan kattaroq qoladi (len > 0).
2-tur: buzilgan ma'lumotlar tarkibi bilvosita loop stri des ta'sir qiladi.
Ushbu turdagi xatolar ma'lum bir ma'lumot parchasi ma'lum kutilmagan
qiymatlarga buzilganda paydo bo'ladi. Keyinchalik bu qiymatlar ma'lumotlar
orqali aylanish bosqichlariga ta'sir qiladi va/yoki tarqatilishini nazorat
qiladi va innite sikllarga olib keladi. Misol uchun, 12-rasmda ko'rsatilganidek,
konfiguratsiya le ( 190-satrdagi konf) buzilganda, conf dan o'qiladigan
BUFFER_SIZE o'zgaruvchisi 0 ga aylanadi . 87-qatordagi nol o'lchamli bayt
Do'stlaringiz bilan baham: |