Sobes.tech
Junior — Middle

Əgər catch istisna qaytarırsa və finally "finally" sətirini qaytarırsa, try blokunda sıfıra bölmə zamanı tərtib xətası baş verərmi?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da tam ədədi tiplər üçün sıfıra bölmə ArithmeticException istisnasını törədir. Əgər bu try blokunda baş verərsə və catch blokunda başqa bir istisna atılırsa və finally blokunda return əmri olsa, dəqiq finally-dən alınan dəyər qaytarılacaq və istisnalar basdırılacaq.

Nümunə:

public String test() {
    try {
        int a = 1 / 0; // ArithmeticException
    } catch (Exception e) {
        throw new RuntimeException("catch-də xəta");
    } finally {
        return "finally";
    }
}

Bu kodda metod "finally" sətirini qaytaracaq və istisna atmayacaq, çünki finally-dəki return trycatch-dən gələn istisnaları üstələyir. Tərtib xətası baş verməz, lakin bu davranış xətalar haqqında məlumatın itirilməsinə səbəb ola bilər və pis təcrübə hesab olunur.