JAVA_예외처리_finally

호근·2022년 12월 13일
0

java

목록 보기
30/35

finally

finally블럭은 try-catch문과 함께 사용된다.

단, 예외의 발생여부와는 관계없이 실행되어야할 코드를 포함한다.

Syntax

try {	// 예외가 발생할 가능성이 있는 문장
	. . .
} 
catch(Exception3 e){	// 예외발생 시 처리를 위한 문장
	. . .
} 
finally{	// 예외와 관계없이 항상 실행되어야 할 문장
	. . .
} 

예시코드_1

public class FinallyTest {

	public static void main(String[] args) {
		try {
			startInstall();		// 프로그램 설치 메서드
			copyFiles();		// 파일복사 메서드
			deleteTempFiles();	// 프로그램 설치에 사용된 임시파일 삭제 메서드
		} catch (Exception e) {
			e.printStackTrace();
			deleteTempFiles();	// 프로그램 설치에 사용된 임시파일 삭제
		}
	}
	static void startInstall() {
		/*	프로그램 설치에 필요한 파일을 준비하는 코드 */
	}
	static void copyFiles() {
		/*	파일들을 복사하는 코드 */
	}
	static void deleteTempFiles() {
		/*	임시파일을 삭제하는 코드 */
	}
}

위 코드의 경우 deleteTempFiles()가 여러 번 겹친다.
deleteTempFiles()는 예외발생여부에 관계없이 실행되어야하므로
다음과 같이 finally블럭을 사용해준다.

예시코드_2

public class FinallyTest {

	public static void main(String[] args) {
		try {
			startInstall();		// 프로그램 설치 메서드
			copyFiles();		// 파일복사 메서드
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			deleteTempFiles();	// 프로그램 설치에 사용된 임시파일 삭제
		}
	}
	static void startInstall() {
		/*	프로그램 설치에 필요한 파일을 준비하는 코드 */
	}
	static void copyFiles() {
		/*	파일들을 복사하는 코드 */
	}
	static void deleteTempFiles() {
		/*	임시파일을 삭제하는 코드 */
	}
}

중복을 제거할 수 있다.

주의

try문에 return문이 실행되어 메서드가 종료되는 경우에도
finally블럭의 문장들이 먼저 실행된 뒤 종료된다.

catch문에서 return문을 만나도 마찬가지이다.

profile
22.11.28 ~

0개의 댓글