자바 예외
자바 예외는 크게 3가지로 나눌 수 있습니다.
- 체크 예외(Checked Exception)
- 에러(Error)
- 언체크 예외(Unchecked Exception)
에러(Error)란?
에러는 시스템에 비정상적인 상황이 발생했을 경우를 지칭합니다.
예를들어, 메모리 부족(OutofMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 복구할 수 없는 것을 말합니다.
에러는 개발자가 예측하기도 쉽지 않고 처리할 수 있는 방법도 없음.
예외(Exception)란?
예외는 프로그램 실행 중에 개발자의 실수로 예기치 않은 상황이 발생했을 때 입니다.
예를 들면 (ArrayIndexOutOfBoundsException), (NullPointerException), (FileNotFoundException) 등등.
예외에는 2가지로 나눌 수 있습니다.
- 체크 예외(Checked Exception),
- 언체크 예외(Unchecked Exception)
RuntimeException의 하위 클래스들이 Uncheck Exception 이라 하고 RuntimeException의 하위 클래스가 아닌 Exception 클래스의 하위 클래스들을 Checked Exception이라고 합니다.
체크 예외(Checked Exception)
체크 예외는 RuntimeException의 하위 클래스가 아니면서 Exception 클래스의 하위 클래스들입니다. 체크 예외의 특징은 반드시 에러 처리를 해야하는 특징(try/catch or throw)을 가지고 있습니다.
- 존재하지 않는 파일의 이름을 입력(FileNotFoundException)
- 실수로 클래스의 이름을 잘못 적음(ClassNotFoundException)
언체크 예외(Unchecked Exception)
언체크 예외는 RuntimeException의 하위 클래스들을 의미합니다. 이것은 체크 예외와는 달리 에러 처리를 강제하지 않습니다.
말 그대로 실행 중에(runtime) 발생할 수 있는 예외를 의미합니다.
- 배열의 범위를 벗어난(ArrayIndexOutOfBoundsException)
- 값이 null이 참조변수를 참조(NullPointerException)
컴파일러가 에러처리를 확인하지 않는 RuntimeException 클래스들은 unchecked 예외라고 부르고
예외처리를 확인하는 Exception 클래스들은 checked 예외라고 부릅니다.
참고자료
https://cheese10yun.github.io/checked-exception/
https://www.nextree.co.kr/p3239/