Junior — Middle
Automatikusan bezáródnak a többi erőforrások, ha kivétel lép fel a try-with-resources blokkban lévő egyik komponens bezárásakor?
sobes.tech MI
Válasz az MI-től
A try-with-resources szerkezetben Java-ban minden zárójelben deklarált erőforrás automatikusan bezáródik a deklarálás fordított sorrendjében, még akkor is, ha a zárás során kivétel lép fel.
Ha a zárás során kivétel keletkezik, a JVM folytatja a többi erőforrás zárását. Az első kivételhez hozzáadott, a zárás során keletkezett kivételek suppressed exceptions-ként lesznek hozzáadva.
Példa:
try (Resource res1 = new Resource("res1");
Resource res2 = new Resource("res2")) {
// erőforrásokkal való munka
}
// A blokk elhagyásakor mindkét erőforrás bezáródik,
// még akkor is, ha a res1 zárásakor kivétel keletkezik,
// a res2 is bezáródik.
Ez biztosítja az összes erőforrás megbízható felszabadítását, elkerülve a szivárgásokat.