본문 바로가기

카테고리 없음

Java 예외 처리: try-catch-finally 블록 및 사용자 정의 예외

Java에서 예외 처리는 프로그램 실행 중 발생하는 오류를 처리하고 안정적인 프로그램을 개발하기 위해 필요한 기능입니다. 이 글에서는 Java에서 예외 처리를 위한 try-catch-finally 블록과 사용자 정의 예외에 대해 알아보겠습니다. 이 글을 읽고 나면 다음과 같은 주제에 대해 학습할 수 있습니다:

 

1. Java 예외 처리의 이해

2. try-catch-finally 블록 사용 방법

3. 다중 catch 블록 및 순서

4. 사용자 정의 예외 생성 및 사용 방법

5. 예제 코드

 

1. Java 예외 처리의 이해

 Java 프로그램에서 예외란 실행 중에 발생하는 오류나 예외 상황을 의미합니다. 예외 처리는 이러한 예외 상황을 받아서 적절하게 처리하거나, 오류 메시지를 출력하고 프로그램을 종료하는 등의 작업을 수행하는 것입니다. Java에서 예외 처리를 위해 try-catch-finally 블록을 사용합니다.

 

2. try-catch-finally 블록 사용 방법

Java에서 예외 처리를 위한 기본적인 구조는 다음과 같습니다.

try {
    // 예외가 발생할 수 있는 코드
} catch (예외타입1 변수명) {
    // 예외타입1에 해당하는 예외 처리 코드
} catch (예외타입2 변수명) {
    // 예외타입2에 해당하는 예외 처리 코드
} finally {
    // 예외 발생 여부와 상관없이 항상 실행되는 코드
}

try 블록 내부의 코드는 예외가 발생할 수 있는 코드입니다. 예외가 발생하면 즉시 해당하는 catch 블록으로 이동하여 예외 처리 코드를 실행하게 됩니다. 만약 예외가 발생하지 않는 경우에는 catch 블록을 건너뛰고 실행이 계속됩니다. finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성하는 부분입니다. 예를 들어, 숫자를 0으로 나누는 경우에 발생하는 ArithmeticException 예외를 처리하는 예제 코드입니다.

public class ExceptionHandlingExample {

    public static void main(String[] args) {
        try {
            int result = 10 / 0;
            System.out.println("결과: " + result);
        } catch (ArithmeticException e) {
            System.out.println("0으로 나눌 수 없습니다.");
            e.printStackTrace();
        } finally {
            System.out.println("계산을 완료했습니다.");
        }
    }
}

 

3. 다중 catch 블록 및 순서

다중 catch 블록은 try 블록에서 발생할 수 있는 여러 가지 예외를 잡아 처리하는 방법입니다. 하나의 try 블록에 다중의 catch 블록을 사용하여 각각의 예외타입에 대한 처리 코드를 작성할 수 있습니다. 다중 catch 블록을 사용할 때 주의할 점은, 상위 예외 클래스가 하위 예외 클래스보다 앞서 위치할 경우, 하위 예외 클래스는 실행되지 않기 때문에 순서에 유의해야 합니다.

try {
    // 예외가 발생할 수 있는 코드
} catch (하위예외타입 변수명) {
    // 하위예외타입에 해당하는 예외 처리 코드
} catch (상위예외타입 변수명) {
    // 상위예외타입에 해당하는 예외 처리 코드
}

 

4. 사용자 정의 예외 생성 및 사용 방법

사용자 정의 예외는 특정한 예외 상황을 구체적으로 표현하기 위해 개발자가 직접 생성하는 예외 클래스입니다. 이를 사용하여 세밀한 예외 처리를 할 수 있습니다. 사용자 정의 예외는 주로 Exception 클래스나 RuntimeException 클래스를 상속하여 생성합니다. 아래 코드는 사용자 정의 예외를 생성하고 이를 처리하는 예시입니다.

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

public class CustomExceptionExample {

    public static void main(String[] args) {
        try {
            throw new CustomException("사용자 정의 예외 발생!");
        } catch (CustomException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

 

5. 예제 코드

다음은 try-catch-finally 블록과 다중 catch 블록, 사용자 정의 예외를 사용하여 예외 처리를 수행하는 예제 코드입니다.

import java.io.*;

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

public class ExceptionExample {

    public static void main(String[] args) {
        try {
            File file = new File("nonexistent.txt");
            FileReader fileReader = new FileReader(file);
            int data = fileReader.read();
            System.out.println("data: " + data);
        } catch (CustomException e) {
            System.out.println(e.getMessage());
        } catch (FileNotFoundException e) {
            System.out.println("파일을 찾을 수 없습니다.");
        } catch (IOException e) {
            System.out.println("파일을 읽어 오는 중 오류가 발생했습니다.");
        } finally {
            System.out.println("프로그램을 종료합니다.");
        }
    }
}

 

이로써 Java에서 예외 처리를 위한 try-catch-finally 블록과 사용자 정의 예외에 대해 알아보았습니다. 이를 통해 안정적인 Java 프로그램을 개발할 수 있으며, 구체적인 예외 상황을 표현하는 사용자 정의 예외를 만들어 예외 처리를 더욱 세밀하게 할 수 있습니다. 앞으로의 프로젝트에서 다양한 예외 처리 기법을 활용하세요.