본문 바로가기
전산 관련 시험/프로그래밍(C, JAVA, Python)

[JAVA] 프로그래밍 언어 (ex.19)

by 응_비 2024. 10. 6.
public class Example 19 {
    public static void main(String[] args) {
        int a[] = {1, 2, 3, 4};  // 배열 a를 [1, 2, 3, 4]로 초기화
        try {
            for(int i = 0; i <= 4; i++) {  // i를 0부터 4까지 반복
                System.out.print(a[i]);  // a[i]의 값을 출력
            }
            System.out.println();  // 줄바꿈 출력
        }
        catch(ArithmeticException e){  // 산술 예외 발생 시
            System.out.print("A");  // "A" 출력
        }
        catch(ArrayIndexOutOfBoundsException e) {  // 배열 인덱스 초과 예외 발생 시
            System.out.print("B");  // "B" 출력
        }
        finally {  // 예외 발생 여부와 관계없이 무조건 실행
            System.out.print("C");  // "C" 출력
        }
    }
}

 

코드 실행 과정

  1. 배열 초기화 및 반복문 실행:
    • 배열 a를 [1, 2, 3, 4]로 초기화합니다.
    • try 블록의 for 반복문은 i = 0부터 i = 4까지 반복합니다.
  2. java
    int a[] = {1, 2, 3, 4};
  3. 반복문 동작:
    • i = 0, 1, 2, 3일 때는 a[0], a[1], a[2], a[3] 값이 각각 1, 2, 3, 4로 출력됩니다.
    • i = 4가 되면, 배열의 인덱스 범위를 초과하여 ArrayIndexOutOfBoundsException 예외가 발생합니다.
  4. java
    for(int i = 0; i <= 4; i++) { System.out.print(a[i]); }
  5. 예외 발생 및 처리:
    • i = 4일 때 배열 인덱스를 초과하므로 ArrayIndexOutOfBoundsException 예외가 발생하고, 해당 예외를 처리하는 catch 블록이 실행됩니다.
    java
    catch(ArrayIndexOutOfBoundsException e) { System.out.print("B"); }
    • 따라서 "B"가 출력됩니다.
  6. finally 블록 실행:
    • 예외 발생 여부와 관계없이 finally 블록이 무조건 실행됩니다.
    • "C"가 출력됩니다.
  7. java
    finally { System.out.print("C"); }

최종 출력 결과

  • 1, 2, 3, 4는 try 블록 내에서 출력된 배열의 값입니다.
  • "B"는 ArrayIndexOutOfBoundsException 예외 발생 시 catch 블록에서 출력된 값입니다.
  • "C"는 finally 블록에서 출력된 값입니다.

따라서 최종적으로 콘솔에 출력되는 결과는:

1234BC

 

상세 설명

  1. 배열 인덱스 초과 예외: for 반복문에서 i가 4일 때 a[4]에 접근하려고 시도하지만, 배열 a는 인덱스 0~3까지만 접근할 수 있습니다. 이로 인해 ArrayIndexOutOfBoundsException 예외가 발생합니다.
  2. catch 블록 동작: catch(ArrayIndexOutOfBoundsException e) 블록이 예외를 처리하며 "B"를 출력합니다.
  3. finally 블록의 실행 보장: finally 블록은 예외가 발생하더라도 무조건 실행되므로 "C"가 출력됩니다.

댓글