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 exception
과 unchecked 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++;
}
}
}