На этом шаге мы поговорим про исключения с ресурсами
Рассмотрим классический пример работы с ресурсами.
открыть ресурс try { использовать ресурс } finally { закрыть ресурс }
Как вы понимаете писать каждый раз блок finally может надоесть, а то и вовсе можно забыть про освобождение ресурсов. Начиная с Java SE7 внедренна конструкция, которая называется try с ресурсами (try - with - resource). В своей простейшей форме try с ресурсами выглядит следующим образом:
try (Resource res = ...) {
использовать ресурс res
}
Весь смысл такой конструкции заключается в том, что после работы блока try будет вызван метод close() у данного ресурса, при этом неважно было ли сгенерировано исключение или нет. Есть одно ограничение на класс ресурсов - он должен реализовывать интерфейс Closeable или интерфейс AutoCloseable, которые содержать единственный метод close().
Можно также работать сразу с несколькими ресурсами. Для этого их перечисляют через запятую как это показано ниже:
try (
Resource res1 = ...,
Resource res2 = ...,
Resource res3 = ...
) {
использовать ресурсы res1, res2, res3
}
Независимо было ли сгенерировано исключение или нет, все ресурсы будут освобождены.
На следующем шаге мы рассмотрим трассировку стека вызовов функций