AWS CLOUD FRAMEWORK/Java
[Day16] Ex04
JWJ_Hub
2023. 4. 6. 19:52
package exception;
import java.util.Scanner;
class Timer {
private double minute;
public Timer(double minute) {
this.minute = minute;
}
public void start() throws Exception { // 발생하는 예외를 caller에게 전가시킨다
for(int i = (int)(minute * 60); i != -1; i--) {
System.out.printf("[%02d : %02d]\n", i / 60, i % 60);
Thread.sleep(1000); // 스레드를 제어하는 과정에서 예외가 발생할 수 있다
}
}
}
public class Ex04 {
public static void main(String[] args) {
// throws : 현재 함수(callee)에서 발생한 예외를 caller에게 전가시킨다
Scanner sc = new Scanner(System.in);
double minute;
System.out.print("타이머 시간 입력 (분) : ");
minute = Double.parseDouble(sc.nextLine());
Timer ob = new Timer(minute);
try {
ob.start();
} catch(Exception e) {
e.printStackTrace();
// print : 출력, stack : 쌓이는 구조(함수스택), trace : 경로, 추적
}
sc.close();
// 프로그램의 규모가 커지고, 호출하는 함수의 개수와 스택이 커지면
// 일일이 처리하는 것보다, throws를 통해서 예외를 한곳에 집중시켜서 처리하는 것이
// 효율적이다
// 프로그램마다 다른 상황을 가지는데, 규정된 예외만 처리할 수 있다면 유연성이 떨어진다
// 따라서, 내가 직접 예외 상황을 규정하고 객체를 생성하여 던지는 throw가 필요하다
}
}