Правильный способ закрыть файлы и распространять исключения одновременно - PullRequest
0 голосов
/ 13 марта 2012

Я хочу безопасно закрыть ресурсы и потом распространять исключение.До сих пор я придумал два решения.

Решение 1

FileObject sourceDir = null;
FileObject targetDir = null;
BufferedWriter bw = null;
BufferedReader br = null;

try {
    // R/W operation with files
} finally {
    // close sourceDir, targetDir, br, bw
}

Решение 2

FileObject sourceDir = null;
FileObject targetDir = null;
BufferedWriter bw = null;
BufferedReader br = null;

try {
    // R/W operation with files
} catch (IOException e) {
    throw e;
} finally {
    // close sourceDir, targetDir, br, bw
}

Iмне не нравится throw e во втором решении, но try-finally кажется мне немного необычным, поэтому я не уверен, какой из них мне следует использовать.Или есть способ получше?

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Второе решение может быть полезно, если вы хотите зарегистрировать исключение и / или обернуть его в исключение времени выполнения и выбросить его.

1 голос
/ 13 марта 2012

Вариант 1 совершенно прав.try ... finally обычно используется для этого.

Вы можете даже поместить return в свой блок try, и Java обработает ваш finally и вернет затем.

...