2019년 4월 19일 금요일

Hackerrank Day 17 More Exceptions







알고리즘 연습 사이트


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한다.

댓글 없음:

댓글 쓰기