자바의 정석 - 예외선언하기, finally 블럭

Yohan·2024년 2월 1일
0

메서드에 예외 선언하기

  • 예외를 처리하는 방법
    • try - catch문 (직접 처리)
    • 예외 선언하기 (예외 떠넘기기(알리기))
  • 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것
    (참고 : 예외를 발생시키는 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구별)
// method()를 호출하면 Exception1, Exception2..의 오류가 발생할 수 있다는 뜻
void method() throws Exception1, Exception2, ... ExceptionN {
	// 메서드의 내용
}

// method()에서 Exception과 그 자손 예외 발생 가능
void method() throws Exception {
	// 메서드의 내용
}

class Ex {
	public static void main(String args[]) {
    	method1(); // 같은 클래스 내의 static멤버이므로 객체생성없이 호출가능
    }
    
    static void method1() throws Exception {
    	method1();
    }
    
    static void method2() throws Exception {
    	throw new Exception();
    }
}
  • method2에서 예외처리 X -> method1로 떠넘김 -> method1에서 예외처리 X -> main으로 떠넘김 -> main에서 예외처리 X -> JVM에서 처리

예제

  • main에서 실행, static에서 객체 생성
public class Ex1 {
	public static void main(String[] args) {
		try {
			File f = createFile("");
			System.out.println(f.getName()+ "파일이 성공적으로 생성되었습니다.");
		} catch(Exception e) {
			System.out.println(e.getMessage() + " 다시 입력해주시기 바랍니다.");
		}
	}
	
	static File createFile(String fileName) throws Exception {
		if (fileName == null || fileName.equals(""))
			throw new Exception("파일이름이 유효하지 않습니다.");
		File f = new File(fileName); // File클래스의 객체를 만든다.
		// File객체의 createNewFile메서드를 이용해서 실제 파일을 생성한다.
		f.createNewFile();
		return f; // 생성된 객체의 참조를 반환
	}
}

finally 블럭

  • 예외 발생여부와 관계없이 반드시 수행되어야 하는 코드를 넣는다.
try {

} catch (Exception e) {

} finally {
	// finally 블럭은 try-catch문의 맨 마지막에 위치
}
profile
백엔드 개발자

0개의 댓글