예외 클래스
예외 클래스
예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 발생하는 프로그램의 오류로 예외 처리 프로그램을 통해 정상 실행 상태 유지 가능하고 예외 발생 가능성이 높은 코드를 컴파일 할때 예외 처리를 통해 예외 유무 확인 가능하다
자바에서는 예외를 클래스로 관리한다
일반 예외
컴파일 하는 과정에서 예외처리코드가 필요한지 검사 예외 처리 코드가 없다면 예외가 발생된다
실행 예외
컴파일 과정에서 예외 처리 코드를 검사하지 않는 예외를 말함 개발자의 경험을 통해 예외처리 코드를 넣어야 한다
- NullPointerException
- java.lang.NullPointerException 객체 참조가 없는 상태의 참조 변수로 객체 접근 연산자 도트 사용할 경우 발생
- ArrayIndexOutOfBoundsException
- java.lang.ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과 할 경우
- NumberFormatException
- java.lang.NumberFormatException 문자열을 숫자로 변환할 때 변경 불가능한 문자가 있는 경우
- ClassCastException 상위 및 하위 관계가 아닌 경우 발생한다 instanceof 필요
예외 처리 코드
try-catch-finally 블록
생성자 및 메소드 내부에서 작성되어 일반예외와 실행예외가 발생할 경우 예외 처리가 가능하게 함
1
2
3
4
5
6
7
try{
//예외가 발생 가능한 코드 작성
} catch(예외 클래스 e) {
//해당 예외가 발생할 경우 실행할 코드
} finally {
// 항상 실행할 코드
}
e예외 클래스가 발생한경우 try -> catch -> finally 순서 실행된다
예외가 발생하지 않는다면 try -> finally 순서 실행된다
다중 catch
catch(예외 클래스 e ) 를 발생할 예외에 따라 다중 작성한다 try에서 해당 타입의 예외가 발생하면 그 catch블록을 실행한다
다중 catch를 작성할 때 상위 에외 클래스가 하위 에외 클래스보다 아래 위치 해야한다 아니면 상위 예외 클래스의 catch만 실행된다
throws 키워드
메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 넘기는 역할 예외를 미뤄서 처리한다
1
2
3
4
5
6
7
8
9
10
11
public void method1() {
try {
method2();
} catch (ClassNotFoundException e) {
System.out.println("클래스가 존재하지 않습니다");
}
}
public void method2() throws ClassNotFoundException {
Class clazz = Class.forName("java.lang");
}
throw 키워드
throw new Exception();을 통해서 항상 이부분에서 exception에러 발생
This post is licensed under CC BY 4.0 by the author.