Sobes.tech
Junior — Middle

Vai notiks kompilācijas kļūda, dalot ar nulli try blokā, ja catch atgriež izņēmumu un finally atgriež virkni "finally"?

sobes.tech AI

Atbilde no AI

Java valodā, daloties ar nulli vesela tipiem, rodas ArithmeticException izņēmums. Ja tas notiek try blokā, un catch blokā tiek izcelts cits izņēmums, un finally blokā ir return komanda, tad tieši no finally atgrieztā vērtība tiks atgriezta, un izņēmumi tiks slēpti.

Piemērs:

public String test() {
    try {
        int a = 1 / 0; // ArithmeticException
    } catch (Exception e) {
        throw new RuntimeException("Kļūda catch" );
    } finally {
        return "finally";
    }
}

Šajā kodā metode atgriezīs virkni "finally" un neizsauks izņēmumu, jo return finally blokā pārklāj try un catch izņēmumus. Nebūs kompilācijas kļūdas, bet šāda uzvedība var novest pie kļūdu informācijas zaudēšanas un tiek uzskatīta par sliktu praksi.