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 catch(예외클래스명 변수명){ 실행문장 } TIP : Exception 은 반드시 catch 처리한다. RunTimeException 상속받은 ArimathicException와 같은 것은 throws, catch를 반드시 쓸 필요 없다. * 사용자 예외 생성 이유 ; jdk 예외 클래스에 적합 예외 X) 1. 예외 클래스 정의 class AEx extends Exception 2. 예외 객체 생성/프로그램 내부 발생 throw new AEx(); 3. 예외 처리 ; try-catch-finally/throws
try{
예외발생 가능성 문장;
예외발생o:try 중단 – catch 수행 o
예외발생x: try 수행o – catch 수행x
}
catch(예외클래스명 변수명){
더이상 예외발생않도록 처리 문장
}
더이상 예외발생않도록 처리 문장
}