Junior — Middle
Ще възникне ли грешка при компилиране при деление на нула в блок try, ако catch връща изключение, а finally връща низ "finally"?
sobes.tech AI
Отговор от AI
В Java, при делене на нула за цялостни типове, възниква изключение ArithmeticException. Ако това се случи в блок try, и в блока catch се хвърли друго изключение, а в блока finally има оператор return, тогава именно стойността от finally ще бъде върната, а изключенията ще бъдат потиснати.
Пример:
public String test() {
try {
int a = 1 / 0; // ArithmeticException
} catch (Exception e) {
throw new RuntimeException("Грешка в catch");
} finally {
return "finally";
}
}
В този код методът ще върне низ "finally" и няма да изхвърли изключение, тъй като return в finally прекъсва изключенията от try и catch. Това поведение може да доведе до загуба на информация за грешките и се счита за лоша практика.