Sobes.tech
Junior — Middle

Következik-e fordítási hiba nullával való osztás esetén a try blokkban, ha a catch kivételt ad vissza, és a finally a "finally" sztringet?

sobes.tech MI

Válasz az MI-től

Java-ban az egész szám típusoknál nullával való osztás ArithmeticException kivételt eredményez. Ha ez egy try blokkban történik, és a catch blokkban más kivétel dobódik, és a finally blokkban van egy return utasítás, akkor a finally értéke kerül visszaadásra, és a kivételek elnyomódnak.

Példa:

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

Ebben a kódban a metódus a "finally" sztringet adja vissza, és nem dob kivételt, mivel a return a finally-ben felülírja a try és catch-ből származó kivételeket. Nem fog fordítási hiba keletkezni, de ez a viselkedés adatvesztéshez vezethet, és rossz gyakorlatnak számít.