코딩일기/자격증

[정보처리기사] [Java] try ~ catch문 | 예외 객체 | 2024년 3회 정보처리기사 실기 기출문제

jhy_2023 2025. 6. 22. 22:49
728x90
반응형


2024년 3회 정보처리기사 실기 기출문제

문제

다음 Java 코드를 실행했을 때 출력 결과를 쓰시오.

public class Main { 
  public static void main(String[] args) {
      int sum = 0;
      try {
          func();
      } catch (NullPointerException e) {
          sum = sum + 1;
      } catch (Exception e) {
          sum = sum + 10;
      } finally {
          sum = sum + 100;
      }
      System.out.print(sum);
  }

  static void func() throws Exception {
      throw new NullPointerException(); 
  }
}

정답

101
반응형

해설

📌 기본 개념

1️⃣ try ~ catch 문

try {
    // 예외 발생 가능 코드
} catch (특정예외타입 변수) {
    // 예외 처리 코드
} finally {
    // 무조건 실행되는 코드
}
  • 자바에서 예외(Exception)가 발생할 수 있는 코드를 try 블록에 작성하고, 발생한 예외에 따라 catch 블록에서 예외를 처리합니다.
  • finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 영역입니다.
  • 즉, 예외 발생 시 → try → catch (해당 예외형에 맞을 경우) → finally
    예외 미발생 시 → try → finally (catch는 실행되지 않음!)

2️⃣ throw 키워드

throw new NullPointerException();
  • throw는 개발자가 강제로 예외를 발생시키고자 할 때 사용하는 키워드입니다.
    (throws는 메서드 선언부에서 예외를 전달한다는 의미이고, throw는 예외를 발생시키는 명령입니다.)
  • 위 코드는 NullPointerException 예외를 직접 발생시킵니다.
  • 주요 예외 객체
    • NullPointerException : 존재하지 않는(=null) 객체를 참조한 경우 발생
    • ClassNotFoundException : 클래스를 찾지 못한 경우 발생
    • NoSuchMethodException : 호출하려는 메서드를 찾지 못한 경우 발생
    • FileNotFoundException : 파일이 존재하지 않거나 열 수 없는 경우 발생
    • InterruptedIOException : 입출력 도중 스레드가 인터럽트된 경우 발생
    • ArithmeticException : 0으로 나누기 등 잘못된 산술 연산이 수행된 경우 발생
    • IllegalArgumentException : 메서드에 잘못된 인자를 전달한 경우 발생
    • NumberFormatException : 숫자 형식이 아닌 문자열을 숫자로 변환하려 한 경우 발생
    • ArrayIndexOutOfBoundsException : 배열의 인덱스를 벗어난 위치에 접근한 경우 발생
    • NegativeArraySizeException : 0보다 작은 값으로 배열의 크기를 지정한 경우 발생
    • NullPointerException : 존재하지 않는(=null) 객체를 참조한 경우 발생
728x90

📌 문제 해설

public class Main { 
  public static void main(String[] args) {
      int sum = 0;
      try {
          func();
      } catch (NullPointerException e) {
          sum = sum + 1;
      } catch (Exception e) {
          sum = sum + 10;
      } finally {
          sum = sum + 100;
      }
      System.out.print(sum);
  }

  static void func() throws Exception {
      throw new NullPointerException(); 
  }
}

try {
    func(); // 여기서 예외 발생
} catch (NullPointerException e) {
    sum = sum + 1; // 해당 catch 블록이 실행됨
} catch (Exception e) {
    sum = sum + 10; // 위에서 처리되었기 때문에 실행되지 않음
} finally {
    sum = sum + 100; // 무조건 실행됨
}
  • func()에서 예외가 발생하므로 try 블록은 중단됩니다.
static void func() throws Exception {
    throw new NullPointerException(); 
}
  • NullPointerException 예외를 throw로 발생시킵니다.
  • 발생한 예외는 NullPointerException이므로 해당 catch 블록 실행 → sum += 1
  • finally는 무조건 실행되므로 → sum += 100
  • 최종 출력 결과 : 
    sum = 0 + 1 (catch) + 100 (finally) = 101

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형