IT CookBook JAVA 마스터/연습문제

IT CookBook JAVA 마스터 Ch.11 연습문제

은행털이 2023. 12. 11. 06:04

01. 다음 빈칸을 채우시오

예외 처리는 애플리케이션의 정상적인 흐름을 유지할 수 있도록 런타임 오류를 처리하는 강력한 방법 중 하나이다.

프로그램 실행 중에 예외를 일으킬 수 있는 코드를 try 블록으로 묶고 catch 블록으로 예외를 처리한다. fianlly 블록은 예외 발생 여부와 관계없이 실행된다.

throw 키워드는 예외를 명시적으로 발생시키는 데 사용하고, throws 키워드는 실행 중 발생 가능한 예외를 선언하는 데 사용된다.

 

02. 런타임 예외 클래스로 런타임을 발생시키는 것은 무엇인가?

Error

Unchecked Exception

Checked Exception

Stack Overflow Exception

 

03. 다음 프로그램의 실행 결과는 무엇인가?

public class MyClass {

	public static void main(String[] args) {
		int a = 2, b = 2, c = 3;
		int d = a - b;
		float e = c / d;
		
		System.out.println(e);
	}
}

Arithmetic expression

Null pointer exception

Number format exception

Array out of bound exception

 

04. 다음 프로그램의 실행 결과는 무엇인가?

public class MyClass {

	public static void main(String[] args) {
		int numbers[] = {1, 2, 3};
		System.out.println(numbers[3]);
	}
}

1

2

3

범위를 벗어난 배열 예외 발생

 

05. 다음 프로그램의 실행 결과는 무엇인가?

public class MyClass {

	public static void main(String[] args) {
		try {
			String data = null;
			if("Java".equals(data)) {
				System.out.println("문자열은 Java이다");
			}
		} catch(Exception e) {
			
		} finally {
			System.out.println("finally 블록은 항상 실행됩니다.");
		}
	}
}

문자열은 Java이다

null

finally 블록은 항상 실행됩니다.

data

 

06. 예외 처리에서 예외를 정의하는 데 사용되는 키워드로, 메서드 본문 내에서 예외를 발생시키는데 사용하는 것은 무엇인가?

try

throw

catch

throws

 

07. 다음 프로그램의 실행 결과는 무엇인가?

public class MyClass {

	public static void main(String[] args) {
		String data = null;
		System.out.println(data.length());
	}
}

인스턴스화된 예외가 발생한다

인터럽트된 예외가 발생한다

널 포인터 예외가 발생한다

범위를 벗어난 배열 예외가 발생한다.

 

08. 다음 프로그램의 실행 결과는 무엇인가?

public class MyClass {

	public static void main(String[] args) {
		try {
			int a = 10, b = 20, c = 30;
			System.out.println(c - (a + b));
		} catch (Exception e) {
			
		} finally {
			System.out.println("예외 발생");
		}
	}
}

30

0

c-(a+b)

0, 예외 발생

 

09. 다음 프로그램의 실행 결과를 작성하시오.

import java.util.Scanner;

public class MyClass {
	
	public static int divide(int num1, int num2) {
		
		int result;
		try {
			result = num1 / num2;
		} catch (ArithmeticException e) {
			System.out.println("divide() 메서드 오류");
			throw e;
		}
		
		return result;
	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("첫 번째 숫자를 입력하세요: ");
		int num1 = scanner.nextInt();
		
		System.out.println("두 번째 숫자를 입력하세요: ");
		int num2 = scanner.nextInt();
		
		try {
			int result = divide(num1, num2);
			System.out.println("나눗셈 결과: " + result);
		} catch(ArithmeticException e) {
			System.out.println("예외 처리 발생");
		}
	}
}

-> divide 함수내에서 산술식 오류가 발생하면 "divide() 메서드 오류"를 출력하고 산술식오류를 발생시킴.

main메서드 내의 try - catch문으로 인해 throw e로 발생시키는 산술식 오류를 받아내 "예외 처리 발생"을 출력함

 

10. 다음 프로그램의 실행 결과를 작성하시오.

public class MyClass {
	
	static boolean isCapitalized(String s) {
		if (s == null) {
			throw new NullPointerException();
		}
		if (s.equals("")) {
			return true;
		}
		String first = s.substring(0, 1);
		String rest = s.substring(1);
		return (first.equals(first.toUpperCase()) && rest.equals(rest.toLowerCase()));
	}

	public static void main(String[] args) {
		
		String str_not_null = "Java";
		String str_is_null = null;
		
		System.out.println(str_not_null + "가 대문자인가? " + isCapitalized(str_not_null));
		System.out.println(str_is_null + "가 대문자인가? " + isCapitalized(str_is_null));
	}
}

-> 입력값이 null이면 NullPointerException을 발생시킴. = main메서드의 2번째 println문에서 예외 발생