Sobes.tech
Middle

Java'da istisno mexanizmi haqida gapiring.

sobes.tech AI

AIdan javob

Java dasturida istisno mexanizmi, dastur bajarilishi davomida yuzaga keladigan xatoliklar va boshqa istisno holatlarni boshqarish uchun ishlatiladi.

Asosiy elementlar:

  • Istisno (Exception): Dastur normal bajarilish jarayonini to'xtatadigan voqeani ifodalaydigan obyekt.
  • try, catch, finally bloklari: Istisnolarni boshqarish uchun ishlatiladi.
    • try: Istisno yuzaga kelishi mumkin bo'lgan kod bloki.
    • catch: try blokida ma'lum bir turdagi istisno yuzaga kelganda bajariladigan kod bloki.
    • finally: Har doim bajariladigan kod bloki, istisno yuzaga kelgan yoki kelmagan bo'lsa ham. Resurslarni ozod qilish uchun ishlatiladi.
  • throw kalit so'zi: Aniq istisno yaratish va tashlash uchun ishlatiladi.
  • throws kalit so'zi: Metod imzoda ishlatiladi va metod tashlashi mumkin bo'lgan istisno turlarini e'lon qiladi.

Java'da istisno hierarxiyasi:

  • Throwable: Barcha istisno va xatolar uchun asosiy sinf.
    • Error: Dastur odatda tiklay olmaydigan jiddiy muammolarni ifodalaydi (masalan, OutOfMemoryError).
    • Exception: Dastur tomonidan ushlanadigan va boshqariladigan istisnalarni ifodalaydi.
      • RuntimeException (Unchecked Exceptions): Aniq ishlov berishni yoki e'lon qilishni talab qilmaydigan istisnalar (masalan, NullPointerException, ArrayIndexOutOfBoundsException).
      • Tekshirilgan istisnalar (Checked Exceptions): try-catch bloki bilan boshqarilishi yoki throws bilan e'lon qilinishi kerak bo'lgan istisnalar (masalan, IOException, FileNotFoundException).

Misol:

public class ExceptionExample {

    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Natija: " + result);
        } catch (ArithmeticException e) {
            // ArithmeticException ni boshqarish
            System.err.println("Xato: Nolga bo'lish mumkin emas.");
            System.err.println("Xato tafsilotlari: " + e.getMessage());
            e.printStackTrace(); // chaqiruvlar stekini ko'rsatadi
        } finally {
            // Bu blok har doim bajariladi
            System.out.println("Finally bloki bajarildi.");
        }
    }

    public static int divide(int a, int b) {
        // b = 0 bo'lsa, ArithmeticException yuzaga kelishi mumkin
        return a / b;
    }
}

throws misoli:

import java.io.FileReader;
import java.io.IOException;

public class ThrowsExample {

    public static void readFile(String filename) throws IOException {
        // IOException yuzaga kelishi mumkin
        FileReader reader = new FileReader(filename);
        // Fayl bilan ishlash
    }

    public static void main(String[] args) {
        try {
            readFile("mavjud_emas_fayl.txt");
        } catch (IOException e) {
            System.err.println("Faylni o'qishda xato: " + e.getMessage());
        }
    }
}