Sobes.tech
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.