
throw 와 throws 키워드의 역할과 사용법try {
// 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType e) {
// 예외 발생 시 처리하는 코드
} finally {
// 예외 발생 여부와 관계없이 항상 실행되는 코드 (선택적)
}try {
// 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType e) {
// 예외 발생 시 처리하는 코드
} finally {
// 예외 발생 여부와 관계없이 항상 실행되는 코드 (선택적)
}Throwable
├─ Error (처리 불가, 시스템 오류)
└─ Exception (일반 예외, 대부분 여기서 처리)
├─ RuntimeException (Unchecked 예외)
└─ 기타 예외 (Checked 예외)Throwable
├─ Error (처리 불가, 시스템 오류)
└─ Exception (일반 예외, 대부분 여기서 처리)
├─ RuntimeException (Unchecked 예외)
└─ 기타 예외 (Checked 예외)| 구분 | 예시 | 처리 방식 |
| Checked 예외 | IOException, SQLException | 반드시 예외 처리 필수 (try-catch or throws) |
| Unchecked 예외 | NullPointerException, ArithmeticException | 선택적으로 처리 (컴파일러 강제 아님) |
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
String line = reader.readLine();
System.out.println(line);
reader.close();
} catch (IOException e) {
System.out.println("파일 읽기 중 오류 발생: " + e.getMessage());
}
}
}import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
String line = reader.readLine();
System.out.println(line);
reader.close();
} catch (IOException e) {
System.out.println("파일 읽기 중 오류 발생: " + e.getMessage());
}
}
}NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등public class UncheckedExceptionExample {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
int c = a / b; // ArithmeticException 발생
System.out.println(c);
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
}
}
}public class UncheckedExceptionExample {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
int c = a / b; // ArithmeticException 발생
System.out.println(c);
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
}
}
}try {
// 위험한 작업
} catch (Exception e) {
// 예외 처리
} finally {
// 자원 해제 등 무조건 실행
}try {
// 위험한 작업
} catch (Exception e) {
// 예외 처리
} finally {
// 자원 해제 등 무조건 실행
}throw 와 throwsthrow 키워드public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("미성년자는 접근 불가");
}
}public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("미성년자는 접근 불가");
}
}throws 키워드public void readFile() throws IOException {
// 파일 읽기 코드
}public void readFile() throws IOException {
// 파일 읽기 코드
}try-catch로 처리하거나 다시 throws 선언 가능