TIL #16-1

DuBu·2023년 6월 29일
0

일본IT JAVA 연수과정

목록 보기
27/61
post-thumbnail

Exception

  • 예외적인 상황을 줄여서 Exception라고 한다.
  • 단순한 문법 오류가 아닌 실행 중간에 발생하는 정상적이지 않은 상황을 뜻한다.

예외 처리(Exception Handling)

  • 예외 상황에 대한 처리를 의미한다.
  • Java는 예외처리 매커니즘을 제공한다.
  • 기본적인 처리 매커니즘 : JVM이 실행 중단 하고, 예외 객체를 통해 문구를 출력한다.
  • 자주 발생하는 예외
    • ArrayIndexOutOfBoundsException: 배열의 인덱스가 배열의 크기를 벗어났을 때 발생합니다.
    • NullPointerException: null 값을 참조했을 때 발생합니다.
    • ClassCastException: 참조 타입과 실제 타입이 일치하지 않을 때 발생합니다.
    • NumberFormatException: 숫자로 인식할 수 없는 문자열을 숫자로 변환하려고 할 때 발생합니다.
    • ArithmeticException: 0으로 나누려고 할 때 발생합니다.

throws 에 대하여 설명하시오.

  • throws는 메소드가 예외를 던질 수 있음을 선언하는 키워드입니다. 예를 들어, 메소드가 ArithmeticException을 던질 수 있다면 다음과 같이 작성합니다.
public void myMethod() throws ArithmeticException {
  // 0으로 나누는 코드를 작성합니다.
}

checked 와 unckecked Excetpion 을 설명하시오.

checked exceptionunchecked exception은 예외의 처리 여부에 따라 구분됩니다. checked exception은 반드시 예외처리를 해야 하는 예외이며, unchecked exception은 예외처리를 하지 않아도 되는 예외입니다.

  • checked exception의 예로는 IOException, SQLException 등이 있으며,
  • unchecked exception의 예로는 ArithmeticException, NullPointerException 등이 있습니다.

아래가 컴파일 에러가 나는 이유에 대하여 설명하시오.

try {
	int num = 6 / 0;
} catch (Exception e) {
	e.printStackTrace();
} catch (InputMismatchException e) {
	e.printStackTrace();
}
  • 코드에서 컴파일 에러가 나는 이유는 InputMismatchException이 Exception의 하위 클래스이기 때문입니다. Java에서는 상위 클래스의 예외를 하위 클래스의 예외로 잡을 수 없습니다.

아래의 의미는?

public static void main(String[] args) throws Exception  {   
}
  • main 메소드가 Exception을 던질 수 있음을 선언하는 것입니다. 따라서 main 메소드에서 예외가 발생하면, 예외처리를 하지 않으면 프로그램이 종료됩니다.

아래를 프로그래밍 하시오.

1~100 사이에 숫자를 맞춰보세요 :
50
Down
1~100 사이에 숫자를 맞춰보세요 :
25
UP
1~100 사이에 숫자를 맞춰보세요 :
43
정답입니다.3회 만에 맞췄어요.
import java.util.Scanner;

public class Test {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int answer = (int) (Math.random()*100 + 1);
		int num = 0;
		int count = 0;
		
		while(true) {
			System.out.println("Put a number between 1 to 100 in console: ");
			try {
				
				num = sc.nextInt();
			} catch (Exception e) {
				e.printStackTrace();
				sc.nextLine();
			}
			
			if(num > answer) {
				System.out.println("Down");
			} else if (num < answer) {
				System.out.println("Up");
			} else {
				System.out.println("Correct! You made an answer while " + count + " times trying.");
				break;
			}
            
            count++;
		}	
	}
}

0개의 댓글