Spring/SpringDB

자바 예외 계층 & 예외 기본 규칙

느리지만 꾸준하게 2022. 6. 20. 15:24

예외 계층의 그림은 아래와 같다.

 

  • 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