KompyuterlarDasturlash

Java: istisnolar va ularning muomala

Har qanday dastur manba kodi debugged faqat barqaror faoliyat qiladi, va kutilmagan vaziyatlar sabab bo'lishi mumkin, hech sharoitlar mavjud. mumkin bo'lgan xatolarning yuqumli jarayoni dasturlash bosqichida amalga oshiriladi. Buning uchun, dasturchi barcha kutilayotgan natijalar hisobga oladi va u dasturning ishga aralashish yoki uning qulashi sabab yo'q edi, shunday qilib, xato ta'sirini cheklash uchun harakat qiladi.

Agar istisno soz kerak bo'lishi mumkin bo'lsa

Java, bir istisno, noto'g'ri foydalanuvchi kiritish tomonidan resurs yoki to'satdan tarmoq ajratish dasturi uchun hech qanday ehtiyoj sabab bo'lishi mumkin. Dastur tuzuvchi tomonidan yaratilgan qulay foydalanish uchun, favqulodda vaziyatlar yuzaga nazorat kerak. iste'mol ishlov istisno, yoki biror narsa noto'g'ri ketdi, deb bildirgan ko'ringan bir xabarning faqat bir qismi natijasida ma'lumotlarni yo'qotish, bir dasturni chiqish uchun kutish kerak emas edi.

Java istisnolar tashish

Nima o'ylab? Java tili o'z ichki istisno muomala o'yinga ega. Albatta, xato katta foiz boshqa jamlama bosqichida tomonidan ushlangan, tizim avtomatik ravishda u endi mumkin deb foydalanish xabardor qiladi. Lekin, ish vaqtida sodir bo'ladi bundan mustasno bunday bor. Tuzuvchi uni oldindan va uni xato sabab yo'q edi, shunday qilib, kod dizayn mumkin, va maxsus tarzda, uni hal qilish va boshqa bir filiali uchun nazorat topshirdi kerak.

Java, bu istisno qo'lga olish uchun derleyici tomonidan beriladigan, shuning xos muammolar ma'lum va standart mashqlar naqsh mavjud.

Odatda, istisnolar

Bu bo'linish - Agar istisno olishingiz mumkin bo'lgan eng oddiy misol. sodda bo'lishiga qaramasdan, jihatidan, bir bo'luvchi sifatida, bir xato sabab bo'ladi nol bo'lishi mumkin. Xo'sh, agar iloji bo'lsa o'tmishda paydo oldindan va oldini olish uchun. Lekin, bu variant har doim mavjud emas, shuning uchun istisno qiluvchi, "nol bilan bo'l" taqdirda to'g'ridan tashkil qilinishi kerak.

ishlash xato kesish uchun Java mexanizmi bu kabi ko'rinadi:

  • to'p istisno ob'ekt shuningdek boshqa har qanday deb, yaratilgan;
  • dasturning tabiiy Kurs uzilib hisoblanadi;
  • chiqarish mexanizmi kodni davom ettirish uchun muqobil yo'l topishga harakat qilmoqda;
  • protsessor, ish dasturi xavfsiz ijrosini topish yoki qayta tiklandi, yoki maxsus tarzda istisno amalga sodir bo'ladi.

Bu kabi qarash mumkin, xato yaratish oddiy misol:

Agar (a == null)

) (Yangi NullPointerException otish;

Bu erda, o'zgaruvchan bir ishga tushirish da tekshiriladi, ya'ni, emas null ob'ekt tayangan bo'lsin. Bu vaziyat vujudga kelgan va maxsus soz kerak bo'lsa, bir istisno bir uloqtirish yangi NullPointerException tomonidan tashlanadi ().

kalit so'zlar haqida bir necha details

istisno bilan shug'ullanadigan bo'lsa, muayyan bir harakatning murojaat qilish kalit so'z Java foydalanish ko'pincha zarur. ularning besh Dasturlash Bu til:

  • Harakat qilib ko'ring. Bu kalit so'z bo'lgan allaqachon uchrashib, u bir istisno mumkin kodeksining bir bo'limga o'tish degan ma'noni anglatadi. Blok cheklangan qavs {}.
  • Catch. Bu kerakli istisno turini kesishadi va tegishli, uni band.
  • Nihoyat. Bu kalit so'z hech istisno qo'lga emas bo'lsa ham, ixtiyoriy va baribir talab qilinadi kodi, ma'lum bir qismi amalga oshirish uchun ishlatiladi. Ushalar blokda keyin to'g'ridan-to'g'ri qo'shilgan.
  • Tashlangiz - istalgan joydan Java istisnolarni yaratish imkonini beradi.
  • Otadir - usuli imzo joylashtirilgan bir kalit so'z. Bu quyidagi kodi Ushbu turdagi Java bir istisno mumkin, degan ma'noni anglatadi. undan kutilmoqda kabi usul ishlash mumkin emas - bu belgisi nazarda tutish kerak Ishlab uchun bir signal bo'lib xizmat qiladi.

bir harakat bilan yuqadigan

Java istisno qilish reliz, tabiiy, u maxsus tarzda ishlov bo'ladi, deb ta'kidlaydi. kodi qism a blokda joylashtirish off o'ralgan bo'lsa eng qulay yo'li, buni. Qaysi bir istisno bo'lishi mumkin. Agar ushbu kodni paytida, virtual mashina, kutilmagan vaziyat topish bor tanqidiy blok va tarjimalar qayta ishlash bilan stantsiyaga nazorat deb tushunadi.

Java kodi istisno bo'lishi mumkin bo'lgan maxsus blok harakat, o'ralgan bo'ladi. Shunday qilib, u bir joyda emas, balki raspolzayas kodi qo'lga qilinadi necha kutilmagan vaziyatlarni joylashtirilgan.

quyidagicha qayta ishlash birligi uchun eng tipik kodi:

{harakat

// bu yerda bir istisno ishlab mumkin, ayrim kod

} Catch (Tip_isklyucheniya_1 identifikator_1) {

// Bu yerda istisno muomala bor, uning turi va shartlariga muvofiq;

} Catch (Tip_isklyucheniya_2 identifikator_2) {

// Bu yerda istisno muomala bor, uning turi va shartlariga muvofiq;

}

So'z catch, uning turi bilan mos sharti, quyidagi ta'rif sifatida, muomala qilinadi, deb kodni xabar va istisno uchun ko'zdan kechiradi. identifikator dalillari sifatida kod bloklarini qayta ishlash foydalanish mumkin.

Nihoyat

Bu avvalgi bobda kelgan ochiq-oydin bo'lib qoldi, deb, catch bloklari vaziyatlar qo'lga olish va ularni qayta ishlash. Lekin juda tez-tez vaziyat qat'iy nazar, ular xatolarini chalingan nazar, ayrim kodni ishlatish kerak qaerda paydo. Buning uchun nihoyat kalit so'z bor. Bu fayllar yoki tarmoq ulanishlar yopib, turli Hisoblagich qiymatlari oshirish uchun ishlatiladi.

Bu fitna necha catch bloklari usullari istisno qo'lga ixtiro etadi. Misol uchun, sinash mavjud kodi Sovuq kabi kutilmagan vaziyat hosil. So'ngra, konsol «! Sovuq Caught» ifodasi paydo qilinadi «narsa haqida? Bardam deb emasmi». Bu nihoyat blok har qanday holatda amalga oshiriladi, deb.

Aslida, bir yo'l nihoyat bor selni keltirib oldini olish uchun. Bu virtual mashina tugaganidan bilan bog'liq. uni amalga oshirish uchun qanday topish, bu internet ochiq bo'shliqlar ustida mumkin.

tashlangiz kalit so'z

Otishni o'rganish mustasno hosil. quyidagicha Uning sintaksisi:

) (Yangi NewException otish;

turi NewException yangi istisno bor yaratilgan (). foydalanish mumkin, bir xil allaqachon standart Java kutubxona sinflar kiritilgan va ilgari o'z ishlab chiqarish shaxslar tomonidan belgilanadi, deb.

Bu dizayn chaqiriq keyin uni ushlab imkoniyatiga ega bo'lish uchun tartibda, Ushalar bloklar ichida sodir bo'lishi kerak bo'lgan har usuli ta'rifi, bir qismidir.

So'z uradi

Nima usuli bir istisno, lekin to'g'ri band imkoniyatiga ega emas, bir vaziyatga rivojlantirish jarayonida bo'lsa. Shu maqsadda, usul imzo so'z uradi va iloji istisno turini bildiradi.

Ushbu teg usuli ularning shu istisno qilib qo'yish mumkin emas, deb mijoz Ishlab chiquvchilar uchun indikator bir xil bo'ladi. Xato turi tekshiriladi, agar Bundan tashqari, keyin kompilyator ochiq majbur qiladi, buning uchun so'rang.

resurslari

Java versiyasi 7 Dasturchilar resurslari bilan davolash sinash blokda sifatida katta yangilik, shu jumladan qildik.

foydalanish resurslarini saqlab qolish uchun yopildi lozim keyin ko'p ob'ektlar, Java yaratilgan. Avvalroq u hisobga olish va qo'l shu misollar to'xtatishga majbur bo'ldi. Biroq, endi, ular AutoClosable interfeysi paydo bo'ldi. Bu avtomatik ravishda sinash blokda joylashtirish joylashtirilgan allaqachon ishlatilgan ob'ektlarni yopish yordam beradi. Bu yondashuv orqali uning okunabilirlik sezilarli darajada ortadi kod yozish uchun ko'proq qulay bo'ldi.

O'z darslari Java istisnolar

tasvirlangan dasturlash tilining yaratuvchilari favqulodda dizayn turdagi hisob ko'plab tomonlarini o'z ichiga oldi. Biroq, barcha imkoniyatlari Java o'z istisno aniqlash qobiliyatini amalga shunday voqealar natijasi, ishlamaydi oldini olish uchun, u alohida kodi ehtiyojlariga muvofiq bo'ladi.

oddiy yo'l yaratish - ob'ekt tarkibidan uchun eng munosib merosxo'r qilish.

, İstisnadan meros qilib o'z istisno aniqlash uchun ishlatiladi sinfi bor yuz berdi. bir ko'rsatuv, ikkinchi - - argument msg turi string bilan MyException ikki inşaatçı bor.

So'ngra, imzo o'z ichiga olgan umumiy sinf FullConstructors amalga usuli f, ham MyException uradi. Bu kalit so'z f Java MyException mustasno kabi otish mumkin, degan ma'noni anglatadi. Bundan tashqari, usul organizmda otishni tomonidan konsoli o'zi va dolzarb avlod MyException, matn axborot mahsulotlari ishlab chiqarildi.

Ikkinchi usul yuqumli da konsol aks etadi Agar istisno yaratish qachon, u bir parametresi o'tib, deb birinchi, dan bir oz farq qiladi. Asosiy yilda f () va g () bir harakat qilib ko'ring qiyoslash joylashtiriladi va kalit so'z catch MyException qo'lga tuzilgan deb ochiq-oydin emas. qayta ishlash natijasida konsoli uchun xato xabarni ko'rish uchun hisoblanadi:

Shunday qilib, o'z qo'li bilan, Java istisno kiritish keldi.

Arxitektura istisnolar

Java barcha ob'ektlar kabi, istisnolar ham meros va ierarxik tuzilishga ega. Bu dasturlash tilida tashlangan barcha xatolar ildiz element sinf java.lang.Throwable hisoblanadi. U ikki turdagi meros - Xato va Istisno.

Xato - muhim xatosi uzatish va tekshirilmagan Java istisnolar bo'ladi. ko'p hollarda ushlash va qayta ishlash kabi ma'lumotlar dizayn bosqichida sodir emas, balki yakuniy dastur kodi bilan joriy muhtoj.

yaratish va istisnolar tahlil uchun eng ko'p ishlatiladigan sinf mustasno emas. Bu esa o'z navbatida, RuntimeException jumladan bir necha filiallari, bo'lingan. RuntimeException tomonidan dasturi davomida yuzaga kelgan, ya'ni, ish vaqti, istisnolar bo'ladi. undan olingan barcha sinflar doğrulanamaz bo'ladi.

Ko'pincha istisnolar bor

Java istisno tashqari, ro'yxati, siz batafsil ularning har biri tasvirlab kerak, shuning uchun, eng tez-tez ishlatiladi, quyida keltirilgan:

  • ArithmeticException. Bu arifmetik operatsiyalar bilan bog'liq xatolarni o'z ichiga oladi. eng yorqin misol - nolga tomonidan bo'limi.
  • ArrayIndexOutOfBoundsException - uning uzunligi jami oshadi array element raqamiga bir murojaat.
  • ArrayStoreException - qator bir kelmaydigan element turini yuklansin urinish.
  • ClassCastException - birlariga zulm, bir turini olib urinish.
  • IllegalArgumentException - usul qo'ng'iroq noto'g'ri hujjatingizni foydalanish.
  • NegativeArraySizeException - salbiy hajmi bir qator yaratish istisno.
  • NullPointerException - murojaatlar suiiste'mol null.
  • NumberFormatException - noto'g'ri string aylantirish INTEGER qachon sodir bo'ladi.
  • UnsupportedOperationException - operatsiya mavjud emas.

Bu misollar o'zboshimcha Java istisno turlarini ifodalaydi. Lekin shunday tekshiriladi ko'rinishi:

  • ClassNotFoundException - Class topilmadi.
  • IllegalAcccessException - sinf uchun kirishni cheklash.
  • InterruptedException - oqimi to'siq.
  • NoSuchFieldException - hech majburiy maydon bor.

Istisno talqini

tez-tez duch kelgan istisno gapirganda dizayn o'z talqini, noto'g'ri idrok qilinishi mumkin, deb ta'kidlash lozim. Keyingi kutilmagan vaziyat bo'lishi mumkin batafsil, ham tushuntirib qisqa ro'yxati.

NullPointerException. , Bir istisno bor ilk ishi null teng bo'lgan ob'ektga bir mos yozuvlar murojaat qilishdir. Bu, shuningdek, nol sinf holat usullari uzaytiradi. NullPointerException teng uzunligi kuchini qator olish taqdirda tashlangan bo'lishi mumkin. vaqti-vaqti bilan null kuni saytlarni nazorat qiladi, bunday holatlarni oldini olish uchun.

ArrayIndexOutOfBoundsException. Har qanday dastur massivida foydalanish holda mavjud bo'lmaydi. Shunga ko'ra, unga tez-tez murojaat ishlab va xato mumkin. a developer indeksi ro'yxatda bo'lmagan elementni kirish uchun harakat istisno sodir bo'ladi. Misol uchun, iltimos qiymati yuqorida yoki nol uzunligi ostida bo'ladi. Juda tez-tez qator nol hisobida bilan boshlanadi, deb aslida bir natijasidir.

topilmalar

Java istisnolarni tashish - juda programlayıcının ishini osonlashtiradi va unga toza va kodi xatolar mahrum yaratish imkonini beradi kuchli vositasi atrof-muhit. Qanday silliq va barqaror faoliyat ko'rsatishi qo'llash shaxslar holati va obro'siga bog'liq.

Albatta, bir ko'proq yoki kamroq oddiy dasturlari g'ayritabiiy vaziyatlar juda ham oson tomosha qilish uchun. Lekin bir necha yuz ming liniyalari uchun katta avtomatlashtirilgan komplekslarini u faqat uzoq muddatli sinov va xato natijasida mumkin.

Ular tutkunlarını topish, ba'zi ilovalar vujudga kelgan Java istisno xato uchun, ba'zi kompaniyalar bir mukofot taklif etamiz. Ayniqsa, xavfsizlik siyosati dasturiy ta'minot buzilishiga sabab o'sha tomonidan taqdir.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 uz.delachieve.com. Theme powered by WordPress.