JAVA

Java.예외처리

calla1013 2025. 5. 24. 15:42

💻 자바 예외 처리 완전 정복! 에러부터 사용자 정의 예외, 리소스 관리까지

안녕하세요! 이번 포스팅에서는 자바에서 아주 중요한 예외 처리(Exception Handling)에 대해 자세히 살펴봅니다.
에러와 예외의 차이부터, 자바의 기본 예외 처리 문법, 다중 catch, 사용자 정의 예외, 그리고 최신의 try-with-resources 구문까지 한 번에 정리해보겠습니다.

목차

  1. 💻 자바의 에러와 예외 처리의 기본 개념
  2. ⚠️ 에러와 예외의 차이 및 예외 클래스 소개
  3. 🔍 자바의 예외 처리: Try-Catch-Finally 구문
  4. 🔍 자바 예외 처리: 오류 추적 방법
  5. ⚙️ 다중 catch 구문을 활용한 예외 처리
  6. 🚀 사용자 정의 예외와 예외 던지기
  7. 🎯 자바의 리소스 관리: try-with-resource 구문

1. 💻 자바의 에러와 예외 처리의 기본 개념

자바에서 프로그램 실행 중 발생하는 문제는 크게 두 가지로 나눌 수 있습니다.
컴파일 타임 에러는 코드 작성 시 문법 오류로, 컴파일 자체가 되지 않기 때문에 반드시 수정해야 합니다.
런타임 에러는 프로그램이 실행되는 도중 발생하는 문제로, 자바에서는 이를 예외(Exception)라 부릅니다.
예외는 다시 Checked ExceptionUnchecked Exception으로 구분되어, 컴파일러가 체크하는지 여부가 다릅니다.

2. ⚠️ 에러와 예외의 차이 및 예외 클래스 소개

  • 에러(Error)는 보통 시스템 수준 문제로, 프로그램이 직접 처리하기 어렵고, 코드 수정이 필요합니다. (예: OutOfMemoryError)
  • 예외(Exception)는 프로그램에서 직접 처리할 수 있으며, 안정적 실행을 위해 예외 처리 구문으로 잡아낼 수 있습니다.
  • Checked Exception은 컴파일 시 예외 처리가 강제되는 예외입니다. (예: IOException, FileNotFoundException)
  • Unchecked Exception은 런타임에 발생하며, 주로 프로그래머의 실수에서 발생합니다. (예: NullPointerException, ArithmeticException)

3. 🔍 자바의 예외 처리: Try-Catch-Finally 구문

예외 발생 가능성이 있는 코드를 try 블록에 작성하고, 예외가 발생하면 catch 블록에서 처리합니다.
finally 블록은 예외 발생 여부와 상관없이 무조건 실행되어, 리소스 해제 등에 유용합니다.

try {
    // 예외가 발생할 수 있는 코드
} catch (ExceptionType e) {
    // 예외 처리 코드
} finally {
    // 항상 실행되는 코드 (리소스 해제 등)
}

4. 🔍 자바 예외 처리: 오류 추적 방법

  • printStackTrace(): 예외 발생 위치와 호출 경로를 콘솔에 출력해 디버깅에 도움
  • getMessage(): 예외 메시지 문자열을 반환

5. ⚙️ 다중 catch 구문을 활용한 예외 처리

자바 7부터는 한 개의 try에 여러 catch를 사용할 수 있고, 다중 예외를 한꺼번에 처리할 수도 있습니다.

try {
    // 예외 가능 코드
} catch (IOException | SQLException e) {
    // IOException과 SQLException을 함께 처리
}

6. 🚀 사용자 정의 예외와 예외 던지기

자바에서 기본 제공하는 예외 외에, 업무에 맞는 새로운 예외를 직접 만들 수 있습니다.

public class MyCustomException extends Exception {
    public MyCustomException(String message) {
        super(message);
    }
}

// 예외 던지기
public void doSomething() throws MyCustomException {
    if(문제발생) {
        throw new MyCustomException("문제가 발생했습니다!");
    }
}

7. 🎯 자바의 리소스 관리: try-with-resource 구문

자바 7부터 지원하는 try-with-resources 문법은, 자동으로 리소스를 닫아줍니다.
자동으로 close()를 호출해줘서, 누수 없이 안전하게 리소스를 관리할 수 있어요.

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
// br.close()를 따로 호출할 필요 없음

이상으로 자바 예외 처리의 기본 개념부터 심화 활용까지 알아봤습니다.
코드 작성 시 예외 처리를 꼼꼼히 해두면 프로그램 안정성과 유지보수성이 크게 올라가니 꼭 기억하세요!

다음에도 좋은 내용으로 찾아뵙겠습니다. 감사합니다!

'JAVA' 카테고리의 다른 글

Java.JDBC  (0) 2025.05.24
Java.스레드(Thread)  (1) 2025.05.24
Java.기본 API 클래스  (1) 2025.05.24
Java.상속과 인터페이스  (1) 2025.04.25
Java.객체와 클래스  (1) 2025.04.25