checked
- 꼭 처리를 해줘야하는 예외
- 컴파일 타임에 확인 가능
- 예외 발생시 트랜잭션 처리 : 롤백O
- 예시 : IOException, SQLException
unchecked
- 꼭 처리를 하지 않아도 되는 예외(개발자 부주의)
- 런타임 시에 확인 가능
- 예외 발생 트랜잭션 처리 : 롤백X
- 예시 : RuntimeException, NullPointerException
확인된 예외는 OCP를 위반한다
- 메소드에서 예외를 던졌는데 catch 블록이 세 단계 위에 있다면 그 사이 메소드 모드가 예외를 정의해야 한다
- 모든 함수에서 최하위 함수에서 던지는 예외를 알아서 캡슐화가 깨진다
- 예외를 처리하는 비용 소모가 크다