Sobes.tech
Junior — Middle

Se va produce o eroare de compilare la împărțirea la zero într-un bloc try dacă catch returnează o excepție și finally returnează șirul "finally"?

sobes.tech AI

Răspuns de la AI

În Java, împărțirea la zero pentru tipurile întregi duce la o excepție ArithmeticException. Dacă acest lucru se întâmplă într-un bloc try, și în blocul catch se aruncă o altă excepție, iar în finally există o instrucțiune return, atunci valoarea din finally va fi returnată, iar excepțiile vor fi suprimate.

Exemplu:

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

În acest cod, metoda va returna șirul "finally" și nu va arunca nicio excepție, deoarece return din finally suprascrie excepțiile din try și catch. Nu va apărea o eroare de compilare, dar acest comportament poate duce la pierderea informațiilor despre erori și este considerat o practică proastă.