В C ++ мы получаем ресурс в конструкторе и освобождаем его в деструкторе.
Таким образом, когда исключение возникает в середине функции, не будет утечки ресурсов, заблокированных мьютексов или чего-либо еще.
AFAIK Java-классы не имеют деструкторов. Так как же сделать управление ресурсами в Java.
Например:
public int foo() {
Resource f = new Resource();
DoSomething(f);
f.Release();
}
Как освободить ресурс, если DoSomething выдает исключение? Мы не можем поместить блоки try \ catch во весь код, не так ли?