Javan dokumentaatiossa sanotaan, että try-catch-lohkon jälkeinen finally ajetaan aina. Toisaalta sanotaan, että metodin suoritus pysähtyy täsmälleen siihen kun poikkeus heitetään.
Ajetaanko finally-lohko jos heitän aiemmasta catch:stä uuden poikkeuksen? Siis tyyliin
try {
Mokkule.heitäPoikkeus();
} catch(KamalaPoikkeus e) {
tee jotain
throw new OmaPoikkeus(e);
} catch(VähemmänKamalaPoikkeus e) {
lokita tai jotain
} finally {
siivoa resurssit
}
Ajetaanko finally-lohko joka tapauksessa?
Ajetaanko finally-lohko jos heitän aiemmasta catch:stä uuden poikkeuksen? Siis tyyliin
try {
Mokkule.heitäPoikkeus();
} catch(KamalaPoikkeus e) {
tee jotain
throw new OmaPoikkeus(e);
} catch(VähemmänKamalaPoikkeus e) {
lokita tai jotain
} finally {
siivoa resurssit
}
Ajetaanko finally-lohko joka tapauksessa?
Vastaukset 1
Vanhimmat
kyllä se aina ajetaan. Joku sai kyllä aikaiseksi tilanteen jolla siitäkin pääsi ohi, mutta voisipa sanoa että aina.