Maruza №4. Mavzu: Istisnolar bilan ishlash



Yüklə 68,98 Kb.
tarix13.12.2023
ölçüsü68,98 Kb.
#140309

Maruza №4. Mavzu: Istisnolar bilan ishlash

Reja

1. Istisno tushunchasi

2. Istisnolar foydalanish

  •  

Bu dasturning muntazam oqimini saqlab qolish uchun ish vaqti xatolarini hal qilishning samarali vositalaridan biri. Java Exception Handling - bu ClassNotFoundException, IOException, SQLException, RemoteException va boshqalar kabi ish vaqti xatolarini boshqarish mexanizmi.

Istisno - bu dasturni bajarish jarayonida, ya'ni ishga tushirish vaqtida yuzaga keladigan, dastur ko'rsatmalarining normal oqimini buzadigan kiruvchi yoki kutilmagan hodisa. Istisnolar dastur tomonidan ushlanishi va hal qilinishi mumkin. Usul ichida istisno sodir bo'lganda, u ob'ektni yaratadi. Ushbu ob'ekt istisno ob'ekti deb ataladi. Unda istisno haqidagi ma'lumotlar, masalan, istisnoning nomi va tavsifi va istisno sodir bo'lgan dasturning holati mavjud

Istisno yuzaga kelishining asosiy sabablari

    • Foydalanuvchi noto‘g‘ri kiritishi
    • Qurilma xatosi
    • Tarmoq ulanishining yo'qolishi
    • Jismoniy cheklovlar (disk xotirasi yo'q)
    • Kod xatolari
    • Mavjud bo'lmagan fayl ochilmoqda

Istisnolarni ikki turga bo'lish mumkin:

  • 1. o'rnatilgan istisnolar
    • Belgilangan istisno
    • Belgilanmagan istisno 
  • 2. Foydalanuvchi tomonidan belgilangan istisnolar
  • Oʻrnatilgan istisnolar:

Ba'zida Java-da o'rnatilgan istisnolar ma'lum bir vaziyatni tasvirlay olmaydi. Bunday hollarda foydalanuvchilar istisnolarni ham yaratishi mumkin, ular "foydalanuvchi tomonidan belgilangan istisnolar" deb ataladi. 

Ba'zida Java-da o'rnatilgan istisnolar ma'lum bir vaziyatni tasvirlay olmaydi. Bunday hollarda foydalanuvchilar istisnolarni ham yaratishi mumkin, ular "foydalanuvchi tomonidan belgilangan istisnolar" deb ataladi. 

    • class GFG {
    • public static void main (String[] args) {
    • int a=5;
    • int b=0;
    • try{
    • System.out.println(a/b);
    • }
    • catch(ArithmeticException e){
    • e.printStackTrace();
    • }
    • }
    • }

Chiqish: java.lang.ArithmeticException: / nolga GFG.main da (File.java:10)

Chiqish: java.lang.ArithmeticException: / nolga GFG.main da (File.java:10)

Xotirani ajratish va taqsimlash

Har bir dasturlash tili tizimdagi xotira bilan shug'ullanadi. Har bir o'zgaruvchiga ma'lum miqdordagi xotira kerak bo'ladi, dasturning o'zi o'z dasturini saqlash uchun xotira, oraliq qiymatlarni saqlash uchun vaqtinchalik xotira va boshqalarni talab qiladi. Shuning uchun xotirani juda ehtiyotkorlik bilan boshqarish kerak. Bitta dastur yoki o'zgaruvchiga tayinlangan xotira joylarini boshqa dastur yoki o'zgaruvchi ishlatmasligi kerak

Kompyuter xotirasidan samarali foydalanish uchun dinamik xotirani ajratish kerak. Masalan: biz bir qator dasturni yozdik. Ushbu dasturni yozayotganda, qatorni ya'ni uni belgilangan o'lchamni belgilash ya'ni belgilangan o'lchamni belgilash kerak (masalan, 0 dan 100 gacha elementlar). Bu esa universal usul bo'lmaydi, chunki u 100 dan ortiq elementlar qatoriga ega emas va agar bizga faqat 20 ta element kerak bo'lsa, lekin xotirada 100 ta element uchun joy ajratilgan, chunki massivning deklaratsiyasi statik edi va bunday xotiradan foydalanish juda samarali emas.

Kompyuter xotirasidan samarali foydalanish uchun dinamik xotirani ajratish kerak. Masalan: biz bir qator dasturni yozdik. Ushbu dasturni yozayotganda, qatorni ya'ni uni belgilangan o'lchamni belgilash ya'ni belgilangan o'lchamni belgilash kerak (masalan, 0 dan 100 gacha elementlar). Bu esa universal usul bo'lmaydi, chunki u 100 dan ortiq elementlar qatoriga ega emas va agar bizga faqat 20 ta element kerak bo'lsa, lekin xotirada 100 ta element uchun joy ajratilgan, chunki massivning deklaratsiyasi statik edi va bunday xotiradan foydalanish juda samarali emas.

Statik va dinamik xotira taqsimoti. Statik holatda xotira taqsimoti, xotira kompilyatsiya vaqtida ajratiladi va dastur davomida bir xil bo'ladi. Xotiraning hajmida ham, xotiradagi joylashishda ham hech qanday o'zgarishlar bo'lmaydi. Ammo bu holatda xotirani dinamik ravishda taqsimlash, xotira ish vaqtida ajratiladi va biz ajratilgan xotira hajmini oshirishimiz/kamaytirishimiz yoki ishlatilmaganda xotirani butunlay bo'shatishimiz mumkin. Agar kerak bo'lsa, biz xotirani qayta taqsimlashimiz mumkin. Demak, dinamik xotira taqsimoti xotiradan unumli foydalanish uchun moslashuvchanlikni beradi.

Statik va dinamik xotira taqsimoti. Statik holatda xotira taqsimoti, xotira kompilyatsiya vaqtida ajratiladi va dastur davomida bir xil bo'ladi. Xotiraning hajmida ham, xotiradagi joylashishda ham hech qanday o'zgarishlar bo'lmaydi. Ammo bu holatda xotirani dinamik ravishda taqsimlash, xotira ish vaqtida ajratiladi va biz ajratilgan xotira hajmini oshirishimiz/kamaytirishimiz yoki ishlatilmaganda xotirani butunlay bo'shatishimiz mumkin. Agar kerak bo'lsa, biz xotirani qayta taqsimlashimiz mumkin. Demak, dinamik xotira taqsimoti xotiradan unumli foydalanish uchun moslashuvchanlikni beradi.

Mahalliy o'zgaruvchilar - bu ma'lum bir blok yoki funktsiyalarda e'lon qilinishi kerak bo'lgan narsadir. Agar ularni doimiy saqlash joyida saqlasak, bu xotirani behuda sarflashiga olib keladi, chunki foydalanilmayotgan xotirani ajratib turamiz. Shuning uchun biz lokal o'zgaruvchilarni saqlash uchun stack xotiradan foydalanamiz va ularni stackdan olib tashlaymiz.

Mahalliy o'zgaruvchilar - bu ma'lum bir blok yoki funktsiyalarda e'lon qilinishi kerak bo'lgan narsadir. Agar ularni doimiy saqlash joyida saqlasak, bu xotirani behuda sarflashiga olib keladi, chunki foydalanilmayotgan xotirani ajratib turamiz. Shuning uchun biz lokal o'zgaruvchilarni saqlash uchun stack xotiradan foydalanamiz va ularni stackdan olib tashlaymiz.


Yüklə 68,98 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin