💻 자바 예외 처리 중에서 특히 finally 블록의 역할과 활용법을 자세히 살펴보겠습니다!
이번 글에서는 try-catch-finally, try-finally, 그리고 throw vs throws의 차이를 명확하게 정리할게요.
"예외도 결국 객체다! 실무에서 꼭 필요한 예외 처리 개념, 제대로 정리해 봅시다."
✅ 예외도 결국 객체!
자바에서 예외(Exception)도 객체입니다.
즉, 필드와 메서드를 가질 수 있고, 오류 코드와 메시지를 담을 수 있죠.
이 정보를 잘 활용하면 더 효과적인 예외 처리가 가능합니다!
예제 코드로 확인해볼까요?
public class CustomException extends Exception {
private int errorCode;
public CustomException(String message, int errorCode) {
super(message);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
👉 이렇게 예외 객체를 만들면 예외 발생 시 더 풍부한 정보를 제공할 수 있어요!
🔹 finally 블록이 중요한 이유
1️⃣ finally는 반드시 실행됨!
try-catch-finally에서 예외 발생 여부와 관계없이 finally 블록은 무조건 실행됩니다.
주로 자원 해제(파일 닫기, DB 연결 해제) 등에 사용하죠.
try {
FileWriter file = new FileWriter("test.txt");
file.write("Hello, Java!");
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("파일 작업이 끝났습니다!");
}
📌 포인트!
- 예외 발생 여부와 관계없이 반드시 실행됨
- 자원 해제에 유용함 (파일, 네트워크, DB 연결 등)
🔹 try-finally vs try-catch-finally
1️⃣ try-catch-finally
- 예외를 처리하면서 자원 해제도 함께 가능
- 실무에서 가장 많이 쓰는 방식
try {
System.out.println("코드 실행 중...");
throw new Exception("예외 발생!");
} catch (Exception e) {
System.out.println("예외 처리 완료");
} finally {
System.out.println("항상 실행됨");
}
코드 실행 중...
예외 처리 완료
항상 실행됨
2️⃣ try-finally
- 예외 처리는 하지 않고 무조건 마무리 작업만 수행
- 예외를 무시하고도 특정 작업을 수행해야 할 때 사용
try {
System.out.println("코드 실행 중...");
throw new Exception("예외 발생!");
} finally {
System.out.println("항상 실행됨");
}
코드 실행 중...
항상 실행됨
Exception in thread "main" 예외 발생!
📌 실무 팁!
- 예외가 발생해도 무조건 실행해야 하는 코드(예: 로그 저장, 연결 해제 등)는 finally에 작성
- 예외를 직접 처리해야 하면 catch 블록 추가
🔥 throw vs throws 차이점 완벽 정리!
구분throwthrows
역할 | 예외 발생 | 예외를 호출한 곳으로 넘김 |
사용 위치 | 메서드 내부 | 메서드 선언부 |
사용 대상 | Exception 객체 | 예외 클래스 |
📌 예제 코드로 차이점 쉽게 이해하기!
// throw 사용 예제 (직접 예외 발생)
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("18세 이상만 가능합니다!");
}
}
// throws 사용 예제 (예외를 호출한 곳으로 넘김)
public void readFile() throws IOException {
FileReader file = new FileReader("test.txt");
}
📌 실무에서 throws를 남발하면?
- 컴파일러 체크 기능이 무력화됨
- 중요한 예외를 놓칠 위험이 커짐
- 해결할 수 있는 예외는 직접 처리하는 것이 좋음!
📝 실무에서 예외 처리할 때 주의할 점
✔️ 예외 메시지를 신경 써서 작성하기!
- 실무에서는 Exception e만 출력하면 안 되고,
어디서, 왜 발생했는지 명확한 메시지를 남겨야 합니다.
✔️ 로그 남기기 필수!
- printStackTrace() 대신 **로깅 라이브러리(log.error())**를 사용해야 합니다.
✔️ 자원 해제는 finally 또는 try-with-resources로 처리하기!
- 리소스를 닫지 않으면 메모리 누수 발생 가능!
🎯 다음 학습 계획
✅ 김영한의 자바 중급 – 1 섹션 11 예외 처리2 – 실습 – 마무리 및 다음 학습
다음 포스팅에서 더 깊이 있는 내용을 정리할 예정이니 기대해 주세요! 😊
이제 실무에서도 완벽한 예외 처리를 할 수 있겠죠?
궁금한 점 있으면 언제든지 댓글 남겨 주세요! 😊
'📚 학습 기록 > Java 기초 & 중급' 카테고리의 다른 글
🔥[25.03.03] [Java] 스코프 & 형변환 완벽 정리! (1) | 2025.03.03 |
---|---|
[25.03.03]🔥 [Java] 반복문 완벽 정리! (for, while, do-while) (0) | 2025.03.03 |
🚀 [25.02.28][Java] 예외 처리 완전 정리! (김영한 강사님 강의 기반) (1) | 2025.02.28 |
[25.02.25][Java] 예외 처리 (Exception Handling) - 예외 계층, 체크 예외 vs 언체크 예외 (0) | 2025.02.25 |
# 🎯 프로그래머스 코딩테스트 풀이 기록 (Level 0) - 25.02.23 (0) | 2025.02.23 |