일반적인 자바예외는 사용자의 실수라고 정의하자.
자바에서 말하는 예외
예외 (Exception)
'예외적인 상황'을 줄여서 '예외'라 한다.
단순한 문법 오류가 아닌 실행 중간에 발생하는 '정상적이지 않은 상황'을 뜻한다.
예외처리
예외 상황에 대한 처리를 의미한다.
자바는 예외처리 메커니즘을 제공한다.
예외 상황을 알리기 위한 클래스
java.lang.ArithmeticException
-> 수학 연산에서의 오류 상황을 의미하는 예외 클래스
java.util.InputMismatchException
-> 클래스 Scanner를 통한 값의 입력에서의 오류 상황을 의미하는 예외 클래스
if ~ else 문을 써도 예외처리 할 수 있지만 예외처리하는 부분을 구분하기 위해 try ~ catch 문을 사용한다.
예외의 처리를 위한 try ~ catch
try {
... 관찰 영역...
}
catch (ArithmeticException e) {
... 처리 영역...
}
예외의 처리를 위한 코드를 별도로 구분하기 위해 디자인된 예외처리 메커니즘이 try ~ catch 이다.
Throwable 클래스
java.lang.Throwable 클래스
모든 예외 클래스의 최상위 클래스 : 물론 Throwable도 Object를 상속한다.
Throwable 클래스의 메소드 둘
public String getMessage() : 예외의 원인을 담고 있는 문자열을 반환
public void printStackTrace() : 예외가 발생한 위치와 호출된 메소드의 정보를 출력
예외 발생시 예외 클래스 인스턴스 생성
JVM은 예외 발생하고 try문 을 찾음.
없으면 호출한 영역으로 가서 또 try문을 찾음. 이런식으로 예외를 전달한다.
JVM은 결국 printStackTrace 예외가 발생한 위치와 호출된 메소드의 정보를 출력하고 종료 한다.
ArrayIndexOutOfBoundsException
배열의 범위를 넘어서서 배열의 값을 지정했을 때 발생한다.
ClassCastException
부모클래스의 인스턴스를 자식클래스의 참조형으로 참조하려고 형변환 할 때 발생한다.
NullPointerException
Null 값을 사용하면 안되는 데 사용할 때 발생한다.
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 19-1. 자바 가상머신의 메모리 모델 (0) | 2019.10.23 |
---|---|
[윤성우 열혈자바] 18-2. 예외처리에 대한 나머지 설명들 (0) | 2019.10.22 |
[윤성우 열혈자바] 17-2. 인터페이스의 문법 구성과 추상 클래스 (0) | 2019.10.22 |
[윤성우 열혈자바] 17-1. 인터페이스의 기본과 그 의미 (0) | 2019.10.22 |
[윤성우 열혈자바] 16-2. Object 클래스와 final 선언 그리고 @Override (0) | 2019.10.22 |