개발 등/중급

checkedException / uncheckedException

darkhorizon 2008. 8. 28. 12:34
728x90
반응형
1. checkedException  : 명시적 - try/catch로 예외를 처리하거나 혹은 메서드에서 throws 를 해야한다.
        RuntimeException을 제외한 Exception 클래스와  모든 하위클래스들. 
             (ClassNotFoundException, IOException...)    
2. uncheckedException : 암묵적 - 예외를 처리하든 안하든 상관없다.
       RuntimeException과 하위클래스들
            (NullPointerException,AtithmeticException,IndexOutOfBoundsException..)


예)
public class ExceptionTest{
    public static void main(String[] args){
       System.out.println("프로그램 시작");
       System.out.println("첫번째 메서드를 호출합니다");
       try{
           firstGo();
       }catch(Exception e){
 
           System.out.println(e.getMessage()+"까지 무사히 처리되었습니다.");
            System.out.println("폭탄의 종류 :"+e.getMessage());
       }
    }
   
    static void firstGo(){     //에러발생!!!  세번째 폭탄을 처리하거나 다음 메서드로 던져야 한다.
       System.out.println("두번째 메서드를 호출합니다");
        try{
            secondGo();
       }catch(RuntimeException re){
            
System.out.println(re.getMessage()+"도 처리되었습니다.");
 
           System.out.println("폭탄의 종류 :"+re.getMessage());
            
System.out.println("마지막 폭탄을 만듭니다");
             throw new ClassNotFoundException("명박이!!!");
        }
    }

    static void secondGo(){       //throws NullPointerException을 생략해도 상관없다.
       System.out.println("세번째 메서드를 호출합니다");
       try{
           thirdGo();
       }catch(Exception e){
           System.out.println(e.getMessage()+"이 처리되었습니다.");  
          
System.out.println("폭탄의 종류 :"+e.getMessage());
          
System.out.println("두번째 폭탄을 만듭니다"); 
           throw new NullPointerException("영삼이!!!");
       }
    }

    static void thirdGo() throws Exception{        //throws Exception을 생략하면 에러발생!!
       System.out.println("첫번째 폭탄을 만듭니다");
       throw new Exception("승만이!!!");
    }
}

728x90