Java를 배워보자/4. 자바 API

자바 예외 처리 (try-catch)

_Blue_Sky_ 2024. 9. 27. 00:07
728x90
728x90

자바 예외 처리 (try-catch) 심층 분석: 예외 종류, 처리 방법, 활용 예시까지

왜 예외 처리가 중요할까요?

자바 프로그램을 개발하다 보면 예상치 못한 상황에 직면하게 됩니다. 예를 들어, 사용자가 잘못된 입력을 하거나, 파일을 찾을 수 없거나, 네트워크 연결이 끊기는 등 다양한 예외 상황이 발생할 수 있습니다. 이러한 예외를 적절히 처리하지 않으면 프로그램이 비정상적으로 종료되거나 오류가 발생하여 사용자에게 불편을 줄 수 있습니다.

자바의 예외 처리 메커니즘은 이러한 예외 상황을 효과적으로 관리하고 프로그램의 안정성을 높이는 데 중요한 역할을 합니다.

예외의 종류

자바에서 발생하는 예외는 크게 두 가지 종류로 나눌 수 있습니다.

  • Checked Exception: 컴파일 시점에 반드시 처리해야 하는 예외입니다. 예를 들어, 파일 입출력 관련 예외(IOException), 네트워크 관련 예외(SocketException) 등이 있습니다.
  • Unchecked Exception: 컴파일 시점에는 확인되지 않고 실행 시점에 발생할 수 있는 예외입니다. 일반적으로 프로그래밍 오류로 인해 발생하며, NullPointerException, ArrayIndexOutOfBoundsException 등이 대표적인 예시입니다.

try-catch 문으로 예외 처리하기

자바에서는 try-catch 문을 사용하여 예외를 처리합니다.

try {
    // 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType e) {
    // 예외 발생 시 실행될 코드
}
 
  • try 블록: 예외가 발생할 가능성이 있는 코드를 작성합니다.
  • catch 블록: 특정 예외가 발생했을 때 실행될 코드를 작성합니다. ExceptionType은 발생할 수 있는 예외의 종류를 지정합니다.

예외 처리 예시

import java.util.Scanner;

public class ExceptionExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        try {
            System.out.print("숫자를 입력하세요: ");
            int num = Integer.parseInt(scanner.nextLine());
            System.out.println("입력한 숫자는 " + num + "입니다.");
        } catch (NumberFormatException e) {
            System.out.println("숫자 형식이 아닙니다.");
        }
    }
}
 

위 코드는 사용자로부터 숫자를 입력받아 출력하는 프로그램입니다. 사용자가 숫자가 아닌 문자를 입력하면 NumberFormatException 예외가 발생하며, catch 블록에서 에러 메시지를 출력합니다.

다중 catch 블록

여러 종류의 예외를 처리하기 위해 다중 catch 블록을 사용할 수 있습니다.

try {
    // ...
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다.");
} catch (NumberFormatException e) {
    System.out.println("숫자 형식이 아닙니다.");
}
 

finally 블록

finally 블록은 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성하는 데 사용됩니다. 주로 자원 해제(예: 파일 닫기, 데이터베이스 연결 해제) 등에 사용됩니다.

try {
    // ...
} catch (Exception e) {
    // ...
} finally {
    // 항상 실행되는 코드
}
 

예외 던지기 (throws)

메서드에서 발생할 수 있는 예외를 호출하는 쪽으로 던지려면 throws 키워드를 사용합니다.

public void myMethod() throws IOException {
    // IOException을 발생시킬 수 있는 코드
}
 

예외 처리 시 주의할 점

  • 구체적인 예외 처리: 가능한 한 구체적인 예외를 처리해야 합니다. 모든 예외를 Exception으로 처리하면 문제 발생 시 원인을 파악하기 어렵습니다.
  • finally 블록의 적절한 사용: 자원 해제 등 반드시 수행해야 하는 작업은 finally 블록에 작성합니다.
  • 예외 전파: 필요한 경우 예외를 상위 메서드로 전파하여 더 상위에서 처리할 수 있도록 합니다.

예외 처리 활용 예시

  • 파일 입출력: 파일을 읽거나 쓸 때 발생할 수 있는 IOException 처리
  • 네트워크 통신: SocketException, ConnectException 등 네트워크 관련 예외 처리
  • 데이터베이스 연동: SQLException 등 데이터베이스 관련 예외 처리
  • 사용자 입력 처리: NumberFormatException, IllegalArgumentException 등 잘못된 입력 처리
  • 예외 로그 기록: 발생한 예외 정보를 로그 파일에 기록하여 문제 분석에 활용

결론

자바의 예외 처리는 프로그램의 안정성과 유지보수성을 높이는 데 필수적인 요소입니다. 다양한 예외 종류와 처리 방법을 이해하고, 적절하게 예외 처리를 구현하여 더욱 강력하고 안정적인 자바 프로그램을 개발할 수 있습니다.

 

728x90
728x90

'Java를 배워보자 > 4. 자바 API' 카테고리의 다른 글

자바 Collection 프레임워크 (List, Set, Map)  (0) 2024.09.27
자바 Date 클래스  (0) 2024.09.27
자바 Math 클래스  (0) 2024.09.26
자바 Wrapper 클래스  (0) 2024.09.26
자바 String 클래스  (0) 2024.09.26