728x90
인프런 김영한 강사님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 보고 정리한 글 입니다
자바 예외의 이해
Object :예외도 객체이다
- 모든 객체의 최상위 부모는 Object 이므로 예외의 최상위 부모도 Object 이다.
Throwable : 최상위 예외이다.
- 하위에 Exception 과 Error 가 있다.
Error :메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다.
- 상위 예외를 catch 로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문이다. 애플리케이션 로직은 이런 이유로 Exception 부터 필요한 예외로 생각하고 잡으면 된다. 참고로 Error 도 언체크 예외이다.
Exception : 체크 예외
- 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.
- Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException 은 예외로 한다.
RuntimeException : 언체크 예외, 런타임 예외
- 컴파일러가 체크 하지 않는 언체크 예외이다.
- RuntimeException 과 그 자식 예외는 모두 언체크 예외이다.
- RuntimeException 의 이름을 따라서 RuntimeException 과 그 하위 언체크 예외를 런타임 예외라고 많이 부른다. 여기서도 앞으로는 런타임 예외로 종종 부르겠다.
체크 예외의 장단점
- 체크예외는 예외를 잡아서 처리할 수 없을 때,예외를 밖으로 던지는 throws 예외를 필수로 선언해야 한다. 그렇지 않으면 컴파일 오류가 발생한다.
- 이것 때문에 장점과 단점이 동시에 존재한다.
- 장점: 개발자가 실수로 예외를 누락하지 않도록 컴파일러를 통해 문제를 잡아주는 훌륭한 안전 장치이다.
- 단점: 하지만 실제로는 개발자가 모든 체크 예외를 반드시 잡거나 던지도록 처리해야 하기 때문에, 너무 번거로운 일이 된다.
- 크게 신경쓰고 싶지 않은 예외까지 모두 챙겨야 한다.
- 추가로 의존관계에 따른 단점도 있다
언체크 예외의 장단점
- 언체크 예외는 예외를 잡아서 처리할 수 없을 때,예외를 밖으로 던지는 throws 예외를 생략할 수 있다.
- 이것 때문에 장점과 단점이 동시에 존재한다.
- 장점: 신경쓰고 싶지 않은 언체크 예외를 무시할 수 있다.
- 체크 예외의 경우 처리할 수 없는 예외를 밖으로 던지려면 항상 throws 예외 를 선언해야 하지만, 언체크 예외는 이 부분을 생략할 수 있다.
- 신경쓰고 싶지 않은 예외의 의존관계를 참조하지 않아도 되는 장점이 있다.
- 단점: 언체크 예외는 개발자가 실수로 예외를 누락할 수 있다. 반면에 체크 예외는 컴파일러를 통해 예외 누락을 잡아준다.
체크 예외 VS 언체크 예외
- 체크 예외 : 예외를 잡아서 처리하지 않으면 항상 throws 에 던지는 예외를 선언해야 한다.
- 언체크 예외: 예외를 잡아서 처리하지 않아도 throws 를 생략할 수 있다.
'JAVA' 카테고리의 다른 글
Java - 컬렉션 (Collection) 프레임 워크 (0) | 2023.02.05 |
---|---|
자바의 다형성 (짧음 주의) (0) | 2023.02.05 |
생성자와 초기화 (feat .this) (0) | 2023.02.05 |
Java - 선언 위치에 따른 변수의 종류 (0) | 2023.02.05 |
Java - 메소드(Method) 선언 (0) | 2023.02.05 |