Sobes.tech
Middle

Java-da istisna mexanizmi haqqında danışın.

sobes.tech Süni İntellekt

AI-dan cavab

Java-da istisna mexanizmi, proqramın icrası zamanı baş verən səhvlər və digər istisna vəziyyətləri idarə etmək üçün istifadə olunur.

İstisna mexanizminin əsas elementləri:

  • İstisna (Exception): Proqramın normal icra axşını pozan hadisəni təmsil edən obyekt.
  • try, catch, finally blokları: İstisnaları idarə etmək üçün istifadə olunur.
    • try: İstisna baş verə biləcək kod bloku.
    • catch: try blokunda müəyyən bir növ istisna baş verərsə işləyən kod bloku.
    • finally: Həmişə işləyən kod bloku, istisna baş verib-verməməsindən asılı olmayaraq. Resursların azad olunması üçün istifadə olunur.
  • Açar söz throw: Açıqlama ilə istisna yaratmaq və atmaq üçün istifadə olunur.
  • Açar söz throws: Metodun imzasında istifadə olunur və metodun ata biləcəyi istisna tiplərini elan edir.

Java-da istisna hierarxiyası:

  • Throwable: Bütün istisna və xətalar üçün əsas sinif.
    • Error: Çox ciddi problemləri təmsil edir və adətən proqramdan çıxmaq üçün istifadə olunur (məsələn, OutOfMemoryError).
    • Exception: Proqram tərəfindən tutulub idarə oluna bilən istisnaları təmsil edir.
      • RuntimeException (Unchecked Exceptions): Açıqlama və ya idarə etmə tələb etməyən istisnalar (məsələn, NullPointerException, ArrayIndexOutOfBoundsException).
      • Checked Exceptions: try-catch bloku ilə idarə olunmalı və ya throws ilə elan olunmalı (məsələn, IOException, FileNotFoundException).

İstisna idarə etmə nümunəsi:

public class ExceptionExample {

    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Nəticə: " + result);
        } catch (ArithmeticException e) {
            // ArithmeticException istisnasını idarə etmək
            System.err.println("Xəta: sıfıra bölmə icazə verilmir.");
            System.err.println("İstisna detalları: " + e.getMessage());
            e.printStackTrace(); // çağrı yığınını göstərir
        } finally {
            // Bu blok həmişə işləyəcək
            System.out.println("Finally bloku icra olundu.");
        }
    }

    public static int divide(int a, int b) {
        // b = 0 olarsa, ArithmeticException atə bilər
        return a / b;
    }
}

throws istifadə nümunəsi:

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

public class ThrowsExample {

    public static void readFile(String filename) throws IOException {
        // IOException atə bilər
        FileReader reader = new FileReader(filename);
        // Fayl ilə əlavə işlər
    }

    public static void main(String[] args) {
        try {
            readFile("mövcud olmayan_fayl.txt");
        } catch (IOException e) {
            System.err.println("Fayl oxuma xətası: " + e.getMessage());
        }
    }
}