Junior — Middle
Haverá um erro de compilação ao dividir por zero num bloco try se catch retornar uma exceção e finally retornar a string "finally"?
sobes.tech IA
Resposta da IA
Em Java, ao dividir por zero para tipos inteiros, ocorre uma exceção ArithmeticException. Se isso acontecer dentro de um bloco try, e uma outra exceção for lançada no bloco catch, e houver uma instrução return no bloco finally, então o valor do finally será retornado, e as exceções serão suprimidas.
Exemplo:
public String test() {
try {
int a = 1 / 0; // ArithmeticException
} catch (Exception e) {
throw new RuntimeException("Erro no catch");
} finally {
return "finally";
}
}
Neste código, o método retornará a string "finally" e não lançará exceção, pois o return no finally sobrescreve as exceções de try e catch. Não ocorrerá erro de compilação, mas esse comportamento pode levar à perda de informações sobre erros e é considerado uma má prática.