JAVA/포스팅

자바 try-catch문에서의 흐름

짜집퍼박사(짜박) 2023. 11. 14. 01:29

자바의 try-catch 문에서의 흐름은 다음과 같습니다.

 

1. try 블록 진입 

try 블록은 예외가 발생할 수 있는 코드를 포함합니다. 이 블록이 실행됩니다.

 

2. 예외 발생 여부 확인

try 블록 내에서 예외가 발생하는 경우, 해당 예외가 발생한 지점에서 코드의 실행이 중단되고 예외 객체가 생성됩니다.

 

3. 적절한 catch 블록 탐색

예외가 발생하면 자바는 try 블록에서 발생한 예외와 일치하는 첫 번째 catch 블록을 찾습니다. 예외 타입이 일치하면 해당 catch 블록이 실행됩니다.

 

4. catch 블록 실행

예외와 일치하는 catch 블록이 찾아지면 해당 블록이 실행됩니다. 예외를 처리하는 코드가 포함되어 있습니다. 만약 예외와 일치하는 catch 블록을 찾지 못하면 예외는 다음 레벨의 상위 호출자에게 전파됩니다.

 

5. finally 블록 실행

예외 발생 여부와 관계없이 finally 블록은 항상 실행됩니다. 이 블록은 주로 리소스 정리 또는 마무리 작업을 위해 사용됩니다.

 

6. 프로그램 계속 진행

예외 처리가 완료되면 프로그램은 정상적으로 계속 진행됩니다. 만약 예외가 처리되지 않았거나 catch 블록 내에서 예외가 다시 던져진 경우, 예외는 상위 호출자로 전파되어 계속 상위 레벨에서 예외 처리를 시도합니다.

 

다음은 간단한 예제를 통해 try-catch 문의 흐름을 설명합니다.

public class Example {
    public static void main(String[] args) {
        try {
            // 예외가 발생할 수 있는 코드
            int result = divide(10, 0);
            System.out.println("나누기 결과: " + result);
        } catch (ArithmeticException e) {
            // ArithmeticException을 처리하는 코드
            System.err.println("0으로 나눌 수 없습니다. 다시 시도하세요.");
        } catch (Exception e) {
            // Exception을 처리하는 코드
            System.err.println("예외가 발생했습니다: " + e.getMessage());
        } finally {
            // 항상 실행되어야 하는 코드 (리소스 정리 등)
            System.out.println("finally 블록 실행");
        }

        // 프로그램 계속 진행
        System.out.println("프로그램 종료");
    }

    private static int divide(int numerator, int denominator) {
        return numerator / denominator;
    }
}

이 예제에서는 10을 0으로 나누는 상황을 가정했습니다. try 블록에서 예외가 발생하면 catch 블록이 실행되고, finally 블록이 마지막에 실행됩니다. 프로그램은 예외 처리 후에도 정상적으로 종료됩니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 예외 발생시키기  (0) 2023.11.14
자바 예외의 발생과 catch블럭  (0) 2023.11.14
자바 try-catch문  (0) 2023.11.14
자바 예외 클래스의 계층구조  (0) 2023.11.14
자바 예외(Exception)  (0) 2023.11.14