Junior — Middle
¿Ocurriá un error de compilación al dividir por cero en un bloque try si catch devuelve una excepción y finally devuelve la cadena "finally"?
sobes.tech AI
Respuesta de la IA
En Java, al dividir por cero para tipos enteros, se produce una excepción ArithmeticException. Si esto ocurre dentro de un bloque try, y en el bloque catch se lanza otra excepción, y en el bloque finally hay una instrucción return, entonces se devolverá el valor de finally, y las excepciones serán suprimidas.
Ejemplo:
public String test() {
try {
int a = 1 / 0; // ArithmeticException
} catch (Exception e) {
throw new RuntimeException("Error en catch");
} finally {
return "finally";
}
}
En este código, el método devolverá la cadena "finally" y no lanzará ninguna excepción, ya que el return en finally anula las excepciones de try y catch. No ocurrirá un error de compilación, pero este comportamiento puede llevar a la pérdida de información sobre errores y se considera una mala práctica.