Sobes.tech
Junior — Middle

Y aura-t-il une erreur de compilation lors de la division par zéro dans un bloc try si catch renvoie une exception et finally renvoie la chaîne "finally"?

sobes.tech IA

Réponse de l'IA

En Java, lors d'une division par zéro pour des types entiers, une exception ArithmeticException est levée. Si cela se produit dans un bloc try, et qu'une autre exception est levée dans le bloc catch, et qu'il y a une instruction return dans le bloc finally, alors la valeur de finally sera renvoyée, et les exceptions seront supprimées.

Exemple:

public String test() {
    try {
        int a = 1 / 0; // ArithmeticException
    } catch (Exception e) {
        throw new RuntimeException("Erreur dans catch");
    } finally {
        return "finally";
    }
}

Dans ce code, la méthode renverra la chaîne "finally" et ne lancera pas d'exception, car le return dans finally annule les exceptions de try et catch. Il n'y aura pas d'erreur de compilation, mais ce comportement peut entraîner une perte d'informations sur les erreurs et est considéré comme une mauvaise pratique.