자바 오류 처리 / 예외 처리에 대해서 설명하겠습니다.
1. 프로그램 오류(에러)란?
: 컴퓨터 처리 시 예상하지 못한 결과가 발생하거나 원하는 결과를 얻지 못해 비정상적으로 종료되는 것
- 컴파일 에러 : 컴파일 시에 잘못된 명령어(코드)를 발견하여 알려주는 오류
- 런타임 에러 : 프로그램 동작 중에 잘못된 데이터를 가지게 되어 잘못된 처리를 진행하려 할 때 알려주는 오류
- 논리적 에러 : 런타임 에러를 발생시키지는 않아 실행은 되지만, 논리적으로 틀린 결과를 알려주는 오류
2. 에러 vs 예외
- 에러 : 프로그램 코드에 의해서 해결할 수 없는 오류
- 예외 : 프로그램 코드에 의해서 해결할 수 있는 오류
3. 클래스 계층 구조
: 모든 조상은 Object 클래스

1) Checked Exception
- Exception 클래스를 상속
(RuntimeException 상속x)
- 컴파일 타임에 체크하므로,
try-catch 처리 / throws 선언 필수
- 주로 네트워크, DB와 같은 외부 환경과 관련된 예외 발생
- 예외 종류
: IOException,
SQLException
2) Unchecked Exception
- 프로그램 동작(런타임) 중에 발생하는 런타임 에러
- 주로 로직 오류로 개발자의 실수로 인해 발생하므로, try-catch 필수x
- RuntimeException 클래스를 상속
3) Runtime Exception
- Unchecked Exception의 하위 종류
=> RuntimeException 을 상속하는 모든 예외 포함
- 예외 종류
: NullPointerException,
ArrayIndexOutOfBoundsException,
IllegalArgumentException,
ArithmeticException,
ClassCastException
💡RuntimeException이 필수 처리 예외가 아닌 이유💡
: 프로그래머에 의한 실수로 발생하는 것들은 강제하지 않는다.
하지만, 예외처리가 필요한 경우에는 코드에 예외처리를 포함시켜야 한다.
참고 : https://velog.io/@gjwjdghk123/Checked-Exception-Unchecked-Exception-그리고-예외-처리