The standard (working) way to properly manage resources in Java (this principle applies to other languages):
Resource resource = acquire(resource);
try {
use(resource);
} finally {
resource.release();
}
Or using a shortcut (with an extra bit of smartness) in the current version of Java SE:
try (Resource resource = acquire(resource)) {
use(resource);
}
( Joe K, , , Java.)
, :
Resource resource = acquire(resource);
try {
SubResource sub = resource.acquire();
try {
use(sub);
} finally {
sub.release();
}
} finally {
resource.release();
}
Java SE 7:
try (
Resource resource = acquire(resource);
SubResource sub = resource.acquire()
) {
use(resource, sub);
}
, .
. , , IOException, - , , RuntimeException. Java , Execute Around idiom (. ). Java SE 8 .
with(new ResourceSubAction() { public void use(Resource resource, SubResource sub) {
... use resource, sub ...
}});