2009년 02월 01일
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 써니
- 방어적 코딩, 방어적 글쓰기. by 미친과학자
- UncaughtExceptionHandler에 대해서 .. by greenfrog
- 객체가 생성되는 과정에 발생하는 예외를 처리해 주지 않으면 ? by greenfrog
- 프로그램의 프로세스를 하나만 허용하기 by greenfrog
# by | 2009/02/01 16:26 | JAVA | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]