Sobes.tech
Middle

Java-da hansı növ istisna idarə oluna bilməz?

sobes.tech Süni İntellekt

AI-dan cavab

Xəta.

Java istisnaları (Throwable) üç əsas növə bölünür:

  1. Yoxlanılan İstisnalar: Zəruri işləmə və ya metod imzasında bəyan edilmə tələb edir (throws).
  2. Yoxlanılmayan İstisnalar (İş vaxtı İstisnaları): Zəruri işləmə tələb etmir. Adətən proqramın məntiqindəki səhvləri göstərir.
  3. Xətalar: Java virtual maşını və ya sistem resursları ilə əlaqəli ciddi problemləri təmsil edir. Onlar tətbiq səviyyəsində işlənə bilməz, çünki kodun özü ilə bağlı deyil.

Error nümunələri:

  • OutOfMemoryError: Java virtual maşını yaddaşı ayıra bilmədi.
  • StackOverflowError: Yığımın daşması baş verdi (çox dərin rekursiya).
  • InternalError: Java Virtual Maşının daxili xətası.

Error ilə try-catch istifadə etmək mənasızdır, çünki bu xətalar vəziyyətləri göstərir ki, onlardan tətbiq ümumiyyətlə uğurla qurtula bilməz. Əvəzində, Error baş verdikdə, tətbiq adətən dayanır.

Texniki olaraq catch (Error e) yazmaq mümkün olsa da, bu kod pis təcrübə sayılır və əsas problemi həll etmir.

try {
    // OutOfMemoryError yarada biləcək kod
    List<Object> list = new ArrayList<>();
    while (true) {
        list.add(new Object());
    }
} catch (OutOfMemoryError e) {
    // Bu blok icra olunacaq, amma bərpa edə bilməzsiniz,
    // çünki sistemdə kifayət qədər yaddaş yoxdur.
    System.err.println("Yaddaş tükəndi! Tətbiq ehtimal ki, dayandırılacaq.");
    // Sonrakı tədbirlər faydasız və ya SecurityException yarada bilər
} catch (Exception e) {
    // Digər istisnaların işlənməsi
    e.printStackTrace();
}

QA avtomatlaşdırmasında, test zamanı Error baş verərsə, bu daha çox test mühitindəki problem, JVM konfiqurasiyasının düzgün olmaması və ya tətbiqin ciddi qüsuru ilə əlaqəlidir və gözlənilən, idarə olunan istisnadan çox, kritik bir nasazlıq kimi qiymətləndirilir. Bu cür ssenarilər test kodundan kənar kök səbəbin araşdırılmasını tələb edir.