ch10. 예외 처리
10-1. 예외 클래스
[예외와 예외클래스]
<예외의 종류> 2가지
- 일반 예외 : 컴파일러 체크 예외
: 컴파일러가 해당 예외처리코드 존재 여부 검사 O
- 실행 예외 : 컴파일러 넌 체크 예외
: 컴파일러가 검사X
<예외 클래스>
: JVM 은 예외를 클래스로 관리
: JVM 은 실행 도중 예외 발생 시 -> 해당 예외클래스로 객체 생성
: 모든 예외 클래스는 jaca.lang.Exception클래스를 상속받음
[실행 예외 종류]
1) NullPointerException
🟨 java.lang.NullPotinterException 예외 발생
: null값 갖는 참조 변수로 객체 접근 시도할 때 발생
2) ArrayIndexOutOfBoundsException
🟨java.lang.ArrayIndexOutOfBoundsException 예외 발생
: 배열 인덱스의 범위 초과하여 사용할 경우 발생
3) NumberFormatException
🟨java.lang.NumberFormatException 예외 발생
: 문자열 데이터를 숫자로 변경하는 경우, 매개값에 숫자 변경 불가능한 문자 포함될 때 발생
4) ClassCastException
🟨java.lang.ClassCastException 예외 발생
: 타입 변환은 부모 클래스 – 자식 클래스 / 구현 클래스 – 인터페이스 간에서만 발생
: 상속 관계와 구현 관계에 있는 클래스 간의 타입 변환이 아닌 경우, 발생
: 강제타입변환은 자동타입변환 발생한 클래스 간에서만 가능하며, 해당되지 않는 클래스 타입으로 변환 시도할 경우 예외 발생
→ instanceof연산자로 먼저 확인 후 강제타입변환 할 것
animal **instanceof** Dog
10-2. 예외 처리
[예외 처리]
: 예외 발생 시 프로그램의 갑작스러운 종료를 막고, 정상 실행 유지되도록 역할
: 일반 예외 코드 -> 컴파일러가 강제적으로 예외처리코드 작성을 요구
: 실행 예외 코드 -> 개발자가 알아서 자발적으로 예외처리코드 작성해야 함
[예외 처리 코드] : try-catch-finally 구문
try {
//예외 발생 가능성 코드
} catch (예외클래스이름 e ) {
//예외 처리 코드
} finally {
//선택. 항상 실행됨
}
[예외 종류에 따른 처리 코드] : 다중 catch문
: try 블록 내부에 다양한 예외 가능 코드 작성 가능
: 각 에외별로 예외처리코드 작생 원할 때 다중 Catch문 작성
: catch 블록 예외 클래스 타입을 읽고, try 블록에서 해당 타입의 예외 발생 시
해당 catch 블록 실행시킴
: catch블록 여러 개여도, 단 하나의 catch블록만 실행된다.
( try블록에서는 예외 발생 즉시 멈추고 catch 실행하기 때문. 즉, 다발적으로 예외발생 X )
: 다중 catch 블록 작성 시, 상위예외클래스가 하위예외클래스보다 아래 쪽에 작성되어야 함
[예외 떠넘기기] : throws
: throws메소드 내부에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할
'Java > [문법]_Java(자바)' 카테고리의 다른 글
ch12. 스레드 (0) | 2021.08.23 |
---|---|
11-1. java.lang 패키지 (0) | 2021.08.11 |
ch09. 중첩 클래스와 중첩 인터페이스 (0) | 2021.08.05 |
ch08. 인터페이스 (0) | 2021.08.04 |
ch07. 상속 (0) | 2021.08.03 |