알고리즘 연습 사이트
Day 17:More Exceptions
전날에 이어서 예외 처리 문제를 풀어보자.
어떤 메소드에 예외를 던지겠다는 표시를 한 후, 메소드 안에서 throw 키워드를 이용하여 고의로 발생시킬 수 있다.
그러면 메소드를 호출한 곳으로 예외는 전달된다.
예외는 이런 식으로 계속 상위로 퍼져 나가는데 결국 최상위에서 예외는 반드시 잡아내어서(try~catch) 처리되어야 한다.
아래 코드는 Calculator 클래스 안에 거듭제곱(n^p)을 구하는 power 메소드에서 중 N or P가 음수일 때 예외를 던지는 코드이다.
class Calculator{
int power(int n, int p) throws Exception{
int result = 1;
if(n<0 || p<0){
throw new Exception("n and p should be non-negative");
}else{
for(int i = 0 ; i < p ; i ++){
result *= n;
}
}
return result;
}
}
class Solution{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while (t-- > 0) {
int n = in.nextInt();
int p = in.nextInt();
Calculator myCalculator = new Calculator();
try {
int ans = myCalculator.power(n, p);
System.out.println(ans);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
in.close();
}
}
power 메소드를 호출한 상위부분으로 예외가 던져지고, 그 부분이 try 문으로 감싸지면서 예외를 catch한다.
댓글 없음:
댓글 쓰기