Ключевое слово finally в Java

Возможна ситуация, при которой нужно выполнить некоторые действия по завершению программы (закрыть поток, освободить соединение с базой данных) вне зависимости от того, произошло исключение или нет. В этом случае используется блок finally, который выполняется после инструкций try или catch. Например:

try {/*код, который может вызвать исключение*/}

catch(Exception1 e1) {/*обработка исключения е1*/}//необязателен

catch(Exception2 e2) {/*обработка исключения е2*/}//необязателен

finally {/*выполняется или после try, или после catch */}

Каждому разделу try должен соответствовать по крайней мере один раздел catch или блок finally. Блок finally часто используется для закрытия файлов и освобождения других ресурсов, захваченных для временного использования в начале выполнения метода. Код блока выполняется перед выходом из метода даже в том случае, если перед ним были выполнены инструкции вида return, break, continue. Приведем пример:

/* пример # 4 : выполнение блоков finally: StudentFinally.java */

package chapt08;

public class StudentFinally {

private static int age;

public static void setAge(int age) {

try {

//реализация

if(age <= 0)

throw new RuntimeException("не бывает");

} finally {

System.out.print("освобождение ресурсов");

//реализация

}

System.out.print("конец метода");

}

public static int getAgeWoman() {

try {

return age – 3;

} finally {

return age;

}

}

public static void main(String[] args) {

try {

setAge(23);

setAge(-5);

} catch (RuntimeException e) {

e.printStackTrace();

}

System.out.print(getAgeWoman());

}

}

В методе setAge() из-за генерации исключения происходит преждевременный выход из блока try, но до выхода из функции выполняется раздел finally. Метод getAgeWoman() завершает работу выполнением стоящего
в блоке try оператора return, но и при этом перед выходом из метода выполняется код блока finally.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

1 комментарий »

 
 

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100