🌱 오늘의 주제 : 메서드에 예외 선언하기
🌱 메서드에 예외 선언하기
- 예외 처리하는 방법 - 1. try - catch문을 사용 2. 예외를 메서드에 선언
- 메서드에 예외를 선언하는 법 : 메서드의 선언부에 키워드 throws를 사용, 예외가 여러개이면 쉼표, 로 구분한다.
- 최고 조상인 Exception클래스를 메서드에 선언하면, 모든 종류의 예외가 발생할 가능성이기 때문에, 자손타입의 예외까지 발생할 수 있다.
- 예외를 메서드에 선언하는 이유 : 메서드를 사용하려는 사람은 어떠한 예외들이 처리되어야 하는지 쉽게 알 수 있기 때문에, 프로그래머들의 짐을 덜어 주고, 견고한 프로그램 코드를 작성하기 도와준다.
- 예외 선언 : 예외 처리 x, 자신을 호출한 쪽으로 예외를 떠넘김.
void method() throws Exception1, Exception2, Exception3.... {
// 메서드 내용
}
🌱 메서드 예외 선언하기 예제
- 예외가 선언되어 있으면 Exception과 같은 checked 예외를 try-catch문으로 처리하지 않아도 컴파일 에러가 발생하지 않는다.
package try_catch;
public class ex8_9 {
public static void main(String[] args) throws Exception { // main도 예외를 JVM에게 떠너김. 즉 비정상 종료.
// 메서드에 예외 선언하기1
method1(); // 같은 클래스내의 static멤버이므로 객체 생성없이 직접 호출 가능.
} // main
static void method1() throws Exception {
method2();
} // method1
static void method2() throws Exception {
throw new Exception(); // 예외를 강제적으로 발생.
} // method2
}
---<결과>
Exception in thread "main" java.lang.Exception
at try_catch.ex8_9.method2(ex8_9.java:16)
at try_catch.ex8_9.method1(ex8_9.java:12)
at try_catch.ex8_9.main(ex8_9.java:7)
- main - 예외처리 / createFile 클래스 - 예외 선언
package try_catch;
import java.io.File;
public class ex8_10 {
public static void main(String[] args) {
// 메서드에 예외 선언하기 2
// main - 예외 처리 // createFile 클래스 - 예외 선언
try {
File f = createFile("");
System.out.println(f.getName() + "파일이 성공적으로 생성되었습니다.");
} catch (Exception e) { // try - catch로 예외 처리.
System.out.println(e.getMessage() + "다시 입력해주시기 바랍니다.");
}
} // main
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 블럭
- finally 블럭은 예외의 발생여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용
- try - catch - finally 순서로 구성
try {
// 예외가 발생할 가능성이 있는 문장들을 넣는다.
} catch (Exception1 e1) {
// 예외처리를 위한 문장을 넣는다.
} finally {
// 예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다.
// finally 블럭은 try-catch 문의 맨 마지막에 위치해야한다.
}
'Java' 카테고리의 다른 글
Java - BufferedReader (0) | 2023.02.26 |
---|---|
Java - 예외 되던지기, 연결된 예외 (0) | 2023.02.22 |
Java - checked 예외, unchecked 예외 (0) | 2023.02.21 |
Java - try - catch문 (0) | 2023.02.20 |
Java - TreeSet (0) | 2023.02.15 |