Sobes.tech
Middle

Кадом навъи истисно дар Java имконнопазир аст, ки онро бартараф кард?

sobes.tech AI

Ҷавоб аз AI

Хатог.

Java изофатҳоро (Throwable) ба се навъи асосӣ тақсим мекунад:

  1. Исключенияи санҷидашуда: Нигоҳдории ҳатмӣ ё эълон дар имзоии усул (throws).
  2. Исключенияи беэътибор (Исключенияи вақти иҷро): Нигоҳдории ҳатмӣ талаб намекунад. Одатан, хатоҳои дар логикаи барнома нишон медиҳанд.
  3. Хатогиҳо: Мушкилоти ҷиддӣ, ки бо мошини виртуалии Java ё захираҳои системӣ алоқаманданд. Онҳоро дар сатҳи барнома коркард кардан мумкин нест, зеро онҳо мушкилоти коди худ нестанд.

Масаланҳои Error:

  • OutOfMemoryError: Мошини виртуалии Java наметавонист хотираро тақсим кунад.
  • StackOverflowError: Пӯшиши стект (рекурсияи хеле амиқ).
  • InternalError: Хатои дохилии Java Virtual Machine.

Коркарди Error бо ёрии try-catch маъно надорад, зеро ин хатоҳо ҳолатҳоро нишон медиҳанд, ки аз онҳо барнома одатан наметавонад барқарор шавад. Баръакс, вақте ки Error рӯй медиҳад, барнома одатан қатъ мешавад.

Ҳатто, ки техникӣ мумкин аст catch (Error e) навишт, чунин код ҳамчун амалияи бад ҳисобида мешавад ва масъалаи асосиро ҳал намекунад.

try {
    // Код, ки метавонад OutOfMemoryError-ро ба вуҷуд орад
    List<Object> list = new ArrayList<>();
    while (true) {
        list.add(new Object());
    }
} catch (OutOfMemoryError e) {
    // Ин блок иҷро мешавад, аммо шумо наметавонед барқарор шавед,
    // зеро системаи хотираи кофӣ надорад.
    System.err.println("Ҳадди хотира! Барнома эҳтимолан қатъ мешавад.");
    // Қадамҳои минбаъда дар ин ҷо бефоида ё SecurityException-ро ба вуҷуд меоранд
} catch (Exception e) {
    // Ҳал кардани дигар истисноҳо
    e.printStackTrace();
}

Дар автоматизатсияи QA, агар дар вақти иҷрои тест Error рӯй диҳад, ин бештар нишон медиҳад, ки мушкилоти муҳити тест, конфигуратсияи нодурустии JVM ё хатоҳои ҷиддӣ дар худи барнома, ки ба хатогии ҷиддӣ оварда расонидааст, на як истиснои интизор ва идорашаванда. Ин гуна сенарияҳо талаб мекунанд, ки сабаби аслии масъала берун аз коди тест таҳқиқ карда шавад.