Exception 클래스


1. 정의 : 자바에서 프로그램 실행 중에 발생하는 에러를 익셉션(Exception, 예외)이라 한다.

2. 발생 : 메서드 호출에 발생할 수도 있으며, throw문을 이용하여 인위적으로 발생시킬 수도 있다.

3. 처리 : try-catch 문에 의해 처리되거나 메서드 밖으로 던져진다. 던져진 익셉션은 그 메서드 호출문이 속하는 try-catch문에 의해 처리되거나 다시 메서드 밖으로 던져진다. 이렇게 계속 메서드 밖으로 던져진 익셉션은 try-catch문에 의해 처리되고 나면 소멸되지만 try-catch문이 처리하지 못한 익셉션은 main 메서드 밖으로 던져진다. 그렇게 되면 자바 가상 기계가 그 익셉션을 잡아서 에러메시지를 출력하고 프로그램을 종료한다.

4. 익셉션 객체와 익셉션 클래스 : 

    (1) 익셉션 객체 : 자바 프로그램에서 익셉션은 객체로 표현된다. 그런 객체를 익셉션 객체라고 한다.

    ① 익셉션 객체 생성 : throw new Exception("재고가 부족합니다.");
    ② throw 문으로 던져진 익셉션은 Exception 타입의 변수를 이용해 잡는다. : catch(Exception e) { ... }

    (2) 익셉션 클래스 : 자바에서는 익셉션을 만들 수 있는 클래스를 다른 클래스와 구분하여 익셉션 클래스라고 한다.
    익셉션을 만들 수 있는 클래스는 Throwable 클래스의 서브 클래스만 익셉션 클래스가 될 수 있다.

5. 익셉션의 종류    

    (1) Exception 클래스와 Exception의 서브클래스들은 비교적 덜 심각한 익셉션을 표현한다.
    (2) Error클래스와 Error의 서브 클래스들은 상대적으로 심각한 익셉션을 표현한다. 에러라고 부르기도 하는데 발생위치를 파악
    하기도 어렵고 복구하기도 어렵기 때문에 사실상 try-catch문으로 처리가 불가능하다.

    (3) checked exception
    (4) unchecked exception

6. 익셉션 클래스의 사용방법

    (1) 익셉션 클래스의 메서드 : Throwable 클래스에 몇몇 메소드들이 선언되있다. 그 메서드들은 모든 서브클래스에 상속되기 
    때문에 모든 종류의 익셉션 객체에 대해 호출할 수 있다.

    ① getMessage 메서드 : 에러메시지를 가져오는 메서드 ( 예 : String str = e.getMessage(); )
        throw new Exception(); - 에러 메시지를 포함하지 않는 Exception 객체를 생성
        throw new Ecception("잘못된 값입니다."); - 에러 메시지를 포함하는 Exception 객체륵 생성
        - 정수를 0으로 나누면 /by zero 라는 에러메시지가 출력된다.

    ② printStackTrace 메서드 : getMessage 메서드가 리턴하는 간단한 에러 메시지보다 더 상세한 익셉션 정보를 알고 싶을 때
        사용하는 메서드 (예 :  e.printStackTrace(); )

    (2) 익셉션 파라미터 변수의 다형성

    ① 익셉션 파라미터 변수 : catch 절에서 익셉션을 받을 때 사용하는 변수, 익셉션 객체를 대입할 수 있는 타입으로 선언해야
        한다. ( 예 : catch(ArithmeticException e) {
        - FileNotFoundException은 IOException의 서브클래스이기 때문에 IOException타입의 익셉션 파라미터 변수는 
        FileNotFoundException도 잡을 수 있다.

7. 익셉션 클래스의 선언 방법 

    (1) checked exception으로 만드는 것이 가장 좋다.  checked exception을 선언할 때는 Exception 클래스를 상속받아 선언]
    해야 한다.

    (2) 사용 예

    class InvalidInputEcception extends Exception {
         InvalidInputEcception() {
            super("잘못된 입력입니다.");
        }
    }

    



by 씩씩한아이 | 2009/02/01 16:26 | JAVA | 트랙백 | 덧글(0)

트랙백 주소 : http://jjh4777150.egloos.com/tb/2274900
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶