package exception;
import java.util.Scanner;
public class Ex03 {
public static void inputData() throws Exception {
System.out.println("[inputData method] ==> 시작");
Scanner input = new Scanner(System.in);
System.out.print("정수 2개 입력 : ");
int n1 = input.nextInt();
int n2 = input.nextInt();
int result1 = 0;
int result2 = 0;
result1 = n1 / n2;
result2 = n1 % n2;
System.out.println("몫 : " + result1);
System.out.println("나머지 : " + result2);
input.close();
System.out.println("[inputData method] ==> 종료");
}
public static void main(String[] args) {
System.out.println("[main method] >> 시작");
// catch (ArithmeticException e) 이 부분이 실행되는 이유는?
try {
inputData();
} catch (ArithmeticException e) {
System.out.println("실행2");
System.out.println("e >> " + e);
System.out.println("[main] ArithmeticException 예외 처리 구문 실행");
} catch(Exception e) {
System.out.println("실행3");
System.out.println("e >> " + e);
System.out.println("[main] Exception 예외 처리 구문 실행");
}
System.out.println("[main method] >> 끝");
}
}
main () 메소드에서 try 구문을 쓸 때
try 영역에 예외 발생 가능한 코드를 작성하고, 단순 타입으로 catch 부분을 확인한다
근데 inputData() 가 Exception 인데,
다음 catch 부분에 확인할 때 에러 타입에 맞으니 그 부분이 실행된 것
타입이 형변환이 되는 instanceof
inpuData() 메소드에는 throws Exception 을 선언해서 inputData() 메소드가 호출할 때
발생하는 어떤 예외든 처리가 된다. 하지만 특정한 예외를 명시하지 않았을 뿐이지
ArithmeticException 도 포함된다고 알려주는 건 아닌데,
inputData() 메소드 내부에서 ArithmeticException 가 발생하면 처리할 throws 선언 목록에 없으니
바로 main () 메소드에서 이 예외를 처리한 것
main() 메소드에 ArithmeticException 을 처리하는 catch 블록이 있기 때문에 catch 블록이 실행된다
'Language > JAVA' 카테고리의 다른 글
JAVA 고급 (0) | 2024.07.03 |
---|---|
JAVA 간단한 프로그램 - 상품 관리 프로그램 (평가) (0) | 2024.04.29 |
JAVA 간단한 프로그램 - 동물병원 프로그램 ver2.1 (1) | 2024.04.25 |
JAVA 간단한 프로그램 - 동물병원 프로그램 ver1.1 (0) | 2024.04.25 |
JAVA 자바 활용 백엔드 개발 기초 연습 문제 - enum 문제 (0) | 2024.04.25 |