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.