예외 계층의 그림은 아래와 같다.
- Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object
이다. - Throwable : 최상위 예외이다. 하위에 Exception 과 Error 가 있다
- Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다.
애플리케이션 개발자는 이 예외를 잡으려고 해서는 안됨.
- 상위 예외를 catch 로 잡으면 그 하위 예외까지 함께 잡는다.
- 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문에다.
애플리케이션 로직은 이런 이유로 Exception 부터 필요한 예외로 생각하고 잡으면 된다.
참고로 Error 도 언체크 예외이다.
- Exception : 체크 예외
- 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.
- Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException 은
예외로 한다.
- RuntimeException : 언체크 예외, 런타임 예외
- 컴파일러가 체크 하지 않는 언체크 예외이다.
- RuntimeException 의 이름을 따라서 RuntimeException 과 그 하위 언체크 예외를 런타임
예외라고 많이 부름
예외 기본 규칙
- 잡아서 처리하거나, 처리할 수 없으면 밖으로 던져야함.
예외 처리
- 5번에서 예외를 처리하면 이후에는 애플리케이션 로직이 정상 흐름으로 동작한다.
예외 던짐
- 예외를 처리하지 못하면 호출한 곳으로 예외를 계속 던지게 된다.
예외에 대한 2가지 기본 규칙
- 1. 예외는 잡아서 처리하거나 던져야 한다.
- 2. 예외를 잡거나 던질 때 지정한 예외뿐만 아니라 그 예외의 자식들도 함께 처리된다.
예를 들어서 Exception 을 catch 로 잡으면 그 하위 예외들도 모두 잡을 수 있다.
또 Exception 을 throws 로 던지면 그 하위 예외들도 모두 던질 수 있다
예외를 처리 못하고 계속 던지면?
- 자바 main() 쓰레드의 경우 예외 로그를 출력하면서 시스템이 종료된다
- 웹 애플리케이션의 경우 여러 사용자의 요청을 처리하기 때문에 하나의 예외 때문에 시스템이 종료되면
안된다.
- WAS가 해당 예외를 받아서 처리하는데, 주로 사용자에게 개발자가 지정한, 오류 페이지를
보여준다.
<출처 김영한:스프링 DB 1편 - 데이터 접근 핵심 원리>
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard
스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의
백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의
www.inflearn.com
'Spring > SpringDB' 카테고리의 다른 글
언체크 예외 기본 이해 (0) | 2022.06.22 |
---|---|
체크 예외 기본 이해 (0) | 2022.06.20 |
트랜잭션 AOP 정리 & 스프링 부트의 자동 리소스 등록 (0) | 2022.06.20 |
트랜잭션 AOP 적용 (0) | 2022.06.20 |
트랜잭션 AOP 이해 (0) | 2022.06.20 |