예외(Exception)
- 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
- 예외 처리 프로그램을 통해 정상 실행상태를 유지가능
- 예외 발생 가능성이 높은 코드를 컴파일할 때 컴파일러는 예외처리 유무를 확인
예외는 두가지 종류가 있다.
1. 일반 예외
- - 컴파일러 체크 예외
- - 자바 소스 컴파일 과정에서 해당 예외 처리 코드가 있는지 검사
- - 예외의 상속관계
2. 실행 예외 (runtime exception)
- - 컴파일러 체크 예외
- - 실행 시 예측할 수 없이 갑자기 발생하기에 컴파일 과정에서 예외처리코드 검사하지 않음.
- - 실행 예외는 개발자의 경험에 의해서 예외 처리 코드를 작성해야 함.
실행 예외 종류
1. NullPointerException
- 가장 빈번하게 발생하는 실행 예외
- 객체 참조가 없는 상태의 참조 변수로 객체 접근 연산자 도트를 사용할 경우 발생한다.
es) String str = null; 선언을 하고 str.length(); 여기서 .은 객체로 접근하라는 뜻. 문제는 str이 어떤 객체를 참조하지 않고 null을 가지고 있으면 오류가 발생한다. 왜? 객체가 없기 때문에
2. ArrayIndexOutOfBoundsException
- 배열에서 인덱스 범위를 초과할 경우
ex) int[] arr = {1, 2, 3}; int result = arr[0] + arr[3];
이 배열의 인덱스는 2까진데 3이 들어오니까 이와같은 오류가 발생함
3. NumberFormatException
- 문자열을 숫자로 변환하는 경우
리턴타입 | 메소드이름(매개 변수) | 설명 |
int | Interger.parseInt(String s) | 주어진 문자열을 정수로 변환해서 리턴 |
double | Double.parseDouble(String s) | 주어진 문자열을 실수로 변환해서 리턴 |
4. ClassCastException
- 상위 및 하위 클래스 그리고 구현 클래스와 인터페이스 간 타입 변환 가능
- 위 관계가 아닌 경우 ClassCastException 발생
반응형
'IT > Java' 카테고리의 다른 글
[Java] Wrapper(포장) 클래스 (0) | 2022.01.30 |
---|---|
[Java] 예외 처리 (0) | 2022.01.26 |
[Java] 상속, 오버라이딩, final 키워드 (0) | 2022.01.21 |
[Java] 필드선언, 필드 사용 (0) | 2022.01.17 |
[Java] 객체 지향 프로그래밍 (0) | 2022.01.17 |