[sample] Exception 테스트
package pe.kr.seveny.test.java.lang.Exception;
import java.io.IOException;
import java.sql.SQLException;
/**
*
* 다음의 코드는 Abstract로 선언된 상위 객체의 함수가
* 새로운 익셉션을 리턴할 경우,
* 하위 객체들의 선언을 계속적으로 수정해야 하는가
* 라는 의문을 테스트 하기 위해서 만들어졌다
*
* 테스트 결과는 그럴 필요가 없다는 것이며..
*
* 상위 객체의 익셉션 처리 선언은 Exception만을 throws 하도록 선언하고
* 실제 사용은 구분지어서 사용이 가능하다.
*
* 실제의 경우 나타나는 모든 Exception을 표시하는 이유는
* 명시적으로 어떤 익셉션이 발생하는지를 표시해 주기 위해서일 것이다.
*
* ps : 이런 부분은 IDE 툴을 사용했다면 refactoring으로
* 간단히(실제로 refactoring을 해본적이 없다 ^^;;) 해결될
* 문제이지만 그렇지 못한 프로젝트 수행중 발생한 의문을
* 해결하기 위한 목적으로 테스트되었다.
*
* @author seveny
* @date 2003. 02. 03
*/
public class testException {
/**
* Method testCallee.
*
* 실제 처리 로직이 위치한 함수 (Exception을 발생시킨다)
* @param index
* @throws Exception
*/
public static void testCallee(int index) throws Exception {
switch (index) {
case 1 : throw new SQLException("1");
case 2 : throw new IOException("2");
default : throw new Exception("3");
}
}
/**
* Method testCaller.
*
* 처리 로직 상위에 존재하는 함수 (Exception을 처리한다)
* @param index
*/
public static void testCaller(int index) {
try {
testCallee(index);
} catch (SQLException e) {
System.out.println("SQLException : " + e.getMessage());
} catch (IOException e) {
System.out.println("IOException : " + e.getMessage());
} catch (Exception e) {
System.out.println("Exception : " + e.getMessage());
}
}
public static void main(String[] args) {
testCaller(1);
testCaller(2);
testCaller(3);
}
}