Junior — Middle
Príde k chybe pri kompilácii pri delení nulou v bloku try, ak catch vracia výnimku a finally vracia reťazec "finally"?
sobes.tech AI
Odpoveď od AI
V Jave pri delení celých čísel nulou dôjde k výnimke ArithmeticException. Ak sa to stane v bloku try, a v bloku catch je vyhodená iná výnimka, a v bloku finally je príkaz return, bude vrátená práve hodnota z finally, a výnimky budú potlačené.
Príklad:
public String test() {
try {
int a = 1 / 0; // ArithmeticException
} catch (Exception e) {
throw new RuntimeException("Chyba v catch");
} finally {
return "finally";
}
}
V tomto kóde metóda vráti reťazec "finally" a nevypustí žiadnu výnimku, pretože return v finally prekrýva výnimky z try a catch. Nedôjde k chybe kompilácie, ale takéto správanie môže viesť ku strate informácií o chybách a je považované za zlú prax.