Sobes.tech
Junior — Middle

Zal er een compilatiefout optreden bij het delen door nul in een try-blok als catch een uitzondering teruggeeft en finally de string "finally" teruggeeft?

sobes.tech AI

Antwoord van AI

In Java leidt delen door nul voor gehele getaltypen tot een ArithmeticException. Als dit gebeurt in een try-blok, en in de catch-blok wordt een andere uitzondering geworpen, en in de finally-blok staat een return-statement, dan wordt de waarde uit finally geretourneerd en worden de uitzonderingen onderdrukt.

Voorbeeld:

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

In deze code geeft de methode de string "finally" terug en werpt geen uitzondering, omdat return in finally de uitzonderingen uit try en catch overschrijft. Er zal geen compilatiefout optreden, maar dit gedrag kan leiden tot verlies van foutinformatie en wordt als slechte praktijk beschouwd.