Java 언어에서는 기반 예외 클래스에서 파생한 예외 클래스를 정의할 수 있습니다. 모든 예외 클래스는 기반 클래스 Exception에서 파생한 클래스입니다. 따라서 여러분은 원하는 예외 클래스를 기반으로 파생 클래스를 정의할 수 있습니다.
다음은 앞에서 작성한 코드에서 예외를 던질 때 어떠한 수를 전달해서 예외가 발생했는지 확인할 수 있게 사용자 정의 예외 클래스를 사용한 코드입니다.
▷ 소스 2.7 finally 문 사용 예
//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: 요청 항은 양수여야 합니다. 피보나치 수열 사용을 마칩니다.