반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ArrayList
- java테스트
- json
- string
- junit
- Array
- CSS
- 단위테스트
- junit5
- javascript
- input
- 자바문법
- 배열
- list
- 테스트자동화
- 정규식
- 인텔리제이
- 자바스크립트
- Visual Studio Code
- 이클립스
- math
- html
- HashMap
- Eclipse
- IntelliJ
- js
- vscode
- 자바
- Java
- 문자열
Archives
- Today
- Total
어제 오늘 내일
[Java] try-catch-finally 사용법 본문
Java에서 try-catch-finally는 실행 중 발생할 수 있는 예외(Exception)를 안전하게 처리해
프로그램이 갑자기 종료되지 않도록 돕는 구조입니다.
예외 상황이 발생해도 안정적인 흐름을 유지하는 데 필수적인 문법입니다.
1. 기본 구조
try {
// 예외가 발생할 수 있는 코드
} catch (ExceptionType e) {
// 예외가 발생했을 때 실행되는 코드
} finally {
// 예외 발생 여부와 상관없이 항상 실행
}
각 블록의 의미
- try: 예외가 발생할 가능성이 있는 코드 실행
- catch: 특정 예외가 발생했을 때 처리
- finally: 예외 발생 여부와 관계없이 무조건 실행 (자원 정리용)
2. try-catch 기본 예제
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
}
출력:
0으로 나눌 수 없습니다.
설명
- 10 / 0 은 ArithmeticException 발생
- catch 블록이 실행되어 오류 메시지 출력
3. finally 블록 사용 예제
finally는 예외가 발생하든 말든 반드시 실행되는 블록입니다.
try {
System.out.println("파일 읽기 시도");
} catch (Exception e) {
System.out.println("오류 발생");
} finally {
System.out.println("자원 정리 실행");
}
출력:
파일 읽기 시도
자원 정리 실행
설명
- catch 실행 여부와 상관없이 finally는 항상 실행됨
- 파일/DB 연결 해제 등 자원 정리에 주로 사용됨
4. 여러 예외를 처리하는 방법 (멀티 캐치)
try문에서 여러 종류의 예외가 발생할 수 있다면 catch문을 여러 개 둘 수 있습니다.
try {
int num = Integer.parseInt("abc");
int result = 10 / num;
} catch (NumberFormatException e) {
System.out.println("숫자로 변환할 수 없습니다.");
} catch (ArithmeticException e) {
System.out.println("계산 중 오류 발생");
}
설명
- 예외 타입에 맞는 catch 블록만 실행됨
5. 하나의 catch에서 여러 예외 처리하기 (Java 7+)
try {
String s = null;
System.out.println(s.length());
} catch (NullPointerException | IllegalArgumentException e) {
System.out.println("예외 발생: " + e.getClass().getSimpleName());
}
설명
- |를 사용해 여러 예외를 한 번에 처리 가능
6. finally 없이 try-catch만 사용하는 경우
try {
int result = 5 / 0;
} catch (ArithmeticException e) {
System.out.println("잘못된 계산");
}
문제 없음.
finally는 선택 요소이며 반드시 필요하지는 않습니다.
7. finally 없이 try-finally만 쓰는 경우
catch 없이 try-finally만 사용하는 경우도 있습니다.
예외를 직접 처리하지 않고, 자원만 정리하고 싶을 때 사용됩니다.
try {
System.out.println("작업 실행");
} finally {
System.out.println("무조건 실행");
}
8. 자주 사용하는 패턴: 파일/DB 자원 정리
FileInputStream fis = null;
try {
fis = new FileInputStream("test.txt");
int data = fis.read();
} catch (IOException e) {
System.out.println("파일 읽기 오류");
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
System.out.println("파일 닫기 실패");
}
}
}
설명
- 예외 여부와 상관없이 파일 스트림을 닫아야 함
- finally가 자원 정리에 매우 적합한 이유
9. try-with-resources (대체 방식, 참고)
Java 7 이후에는 finally 없이도 자동으로 자원을 닫을 수 있음.
try (FileInputStream fis = new FileInputStream("test.txt")) {
int data = fis.read();
} catch (IOException e) {
System.out.println("오류");
}
10. 정리
- try: 예외가 발생할 수 있는 코드
- catch: 예외 처리
- finally: 예외 발생 여부와 관계없이 항상 실행
- 여러 예외는 여러 catch 또는 멀티캐치로 처리 가능
- 자원 정리는 finally 또는 try-with-resources가 가장 적합
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 사용자 정의 예외(Custom Exception) 만들기 (0) | 2026.01.02 |
|---|---|
| [Java] throw vs throws 차이 (0) | 2026.01.01 |
| [Java] 예외(Exception)와 오류(Error) 차이 (0) | 2025.12.31 |
| [Java] 제네릭(Generic) 기본 개념과 예제 (0) | 2025.12.31 |
| [Java] 패키지(package)와 import 구조 이해 (0) | 2025.12.30 |
Comments
