본문 바로가기

콩's EDUCATION/콩's JAVA

[KITRI] 자바 8장 : 예외처리

8장. 예외처리

 

자바 실행 도중(컴파일 과정 + 실행과정) 오동작 == 오류 발생

컴파일 오류 ; syntax 오류 ; 구문오류

int i = 3.14

실행 오류 ; 실행 조건에 따라 발생 오동작

= 예외 = exception

예외 상황 다양하다

= 자바 객체 지향언어

= 모든 객체 취급

= 예외 객체 = 예외 클래스

= api xxxxException 클래스들 다수개

 

* 예외 발생

 

1. 정수 0으로 나눴을 때

==> java.lang.ArithmeticExceptiopn 발생

 

int i = Integer.parseInt(args[0]);

int j = 100/i;

 

 

args[0] '0' 입력 ; 오류 발생

args[0] '100' 입력 ; 정상 수행

 

2. 잘못된 인덱스 범위 접근 경우

==> java.lang.ArrayIndexOutOfBoundsExceptiopn 발생

 

int i = Integer.parseInt(args[0]);

int j = new Int[50];

j[i-1] = i;

 

args[0] '0' 입력 ; 오류 발생

args[0] '100' 입력 ; 정상 수행

 

3. 클래스 형변환 잘못한 경우

==> java.lang.ClassCastException 발생

 

Object i = new Integer(10)

(String)i = String(0);

 

* 예외 처리 문장

 

 try-catch-finally
try{
 예외발생 가능성 문장;
 예외발생o:try 중단 – catch 수행 o
 예외발생x: try 수행o – catch 수행x
}
catch(예외클래스명 변수명){
 더이상 예외발생않도록 처리 문장
}

catch(예외클래스명 변수명){
 더이상 예외발생않도록 처리 문장
}

실행문장

}

 

TIP :

Exception 은 반드시 catch 처리한다.

RunTimeException 상속받은 ArimathicException와 같은 것은

throws, catch를 반드시 쓸 필요 없다.

 

* 사용자 예외 생성

 

이유 ; jdk 예외 클래스에 적합 예외 X)

 

1. 예외 클래스 정의

class AEx extends Exception

 

2. 예외 객체 생성/프로그램 내부 발생

throw new AEx();

 

3. 예외 처리 ; try-catch-finally/throws

 

ch8.zip