Junior — Middle
Došlo by k chybě při kompilaci při dělení nulou v bloku try, pokud catch vrací výjimku a finally vrací řetězec "finally"?
sobes.tech AI
Odpověď od AI
V jazyce Java při dělení celých čísel nulou dojde k výjimce ArithmeticException. Pokud se to stane v bloku try, a v bloku catch je vyhozena jiná výjimka, a v bloku finally je příkaz return, bude vrácena právě hodnota z finally, a výjimky budou potlačeny.
Pří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ódu metoda vrátí řetězec "finally" a nevypustí žádnou výjimku, protože return v finally přebíjí výjimky z try a catch. Nedojde k chybě kompilace, ale takové chování může vést ke ztrátě informací o chybách a je považováno za špatnou praxi.