언어 자료구조 알고리즘/디딤돌 Java 언어 Part2 활용

[Java 언어 활용] 2.5 예외 클래스 정의하기

언제나휴일 2016. 12. 8. 19:33
반응형

[Java 언어 활용] 2.5 예외 클래스 정의하기


 

 Java 언어에서는 기반 예외 클래스에서 파생한 예외 클래스를 정의할 수 있습니다. 모든 예외 클래스는 기반 클래스 Exception에서 파생한 클래스입니다. 따라서 여러분은 원하는 예외 클래스를 기반으로 파생 클래스를 정의할 수 있습니다.

 

 다음은 앞에서 작성한 코드에서 예외를 던질 때 어떠한 수를 전달해서 예외가 발생했는지 확인할 수 있게 사용자 정의 예외 클래스를 사용한 코드입니다.

 

▷ 소스 2.7 사용자 정의 예외 클래스

//EHException.java

//사용자 정의 예외 클래스

public class EHException extends Exception {

        int value;

        public EHException(String msg, int value){

               super(msg);

               this.value = value;

        }

        public int getValue(){

               return value;

        }

}

//사용자 정의 예외 클래스 정의

import java.util.Scanner;

public class Program {

        public static void main(String[] args){

               Scanner scanner = new Scanner(System.in);

               try{

                       int n=0;

                       System.out.println("피보나치 수열을 구할 있습니다.");

                       System.out.print("원하는 :");

                       n = scanner.nextInt();

                       int value = Fibonacci(n);

                       System.out.println("Fibbonacci("+n+")="+value);

                      

               }

               catch(EHException ex){

                       System.out.println("예외 발생("+ex.getValue()+")");

                       System.out.println(ex.toString());

               }

               finally{

                       System.out.println("피보나치 수열 사용을 마칩니다.");

               }

        }

        static int Fibonacci(int n) throws EHException{

               if(n<=0){

                       throw new EHException("요청 항은 양수여야 합니다.",n);

               }

               if((n==1)||(n==2)){

                       return 1;

               }

               return Fibonacci(n-1)+Fibonacci(n-2);

        }      

}

 

▷ 소스 2.7 실행 결과(-3을 입력했을 때)

피보나치 수열을 구할 있습니다.

원하는 :-3

예외 발생(-3)

EHException: 요청 항은 양수여야 합니다.

피보나치 수열 사용을 마칩니다.

 

반응형