코딩일기/자격증
[정보처리기사] [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
반응형