체크 예외 vs 언체크 예외
차이점 : 언체크 예외를 던질 때, throws 선언을 하지 않는다.
체크 예외의 문제점
1. 체크 예외를 던질 떄마다 throws를 선언해줘야 한다.
-> 체크 예외를 던지는 메서드가 100개가 있으면 100개 전부 throws를 선언해줘야 한다.
2. OCP위반.
-> 예를 들어, 서비스 계층에서 SQLException을 사용하고 있는데, 이 예외는 JDBC 기술에 외존한다.
만약 JDBC를 사용하다가 JPA로 기술을 변경을 하면, 서비스 계층의SQLExcpeiton을 전~부 일일이 JPAExcpetion으로 변경을 해 줘야 한다.
즉, 수정에는 closed되어 있지가 않다.
3. 거의 대부분의 시스템에서 발생하는 예외(DB 서버 연결 등)는 애플리케이션 로직(서비스 계층, 컨트롤러 계층 등)에서 처리할 수가 없는 예외이다.
-> 고로, 결국에는 서블릿까지 예외가 전달이 되게 된다.
이때, 체크 예외를 throws 선언까지 일일이 선언하며 게다가 OCP까지 위반하며 사용할 이유가 없다.
4. 어떤 메서드에거 체크 예외가 터지게 되면, 그 메서드를 호출한 곳에서도 전부 Throws를 선언해줘야 하는 귀찮음이 있다.
(그러나, 개발자들이 실수로 예외처리(try-catch, throw)하지 않는 실수를 방지를 할 수가 있다.)
결론 : 체크 예외이든 언체크 예외이든 시스템에서 발생하는 예외는 애플리케이션 로직에서 처리하기 보다는, 언체크 예외를 주로 사용하여(정확히는 체크 예외를 런타임 예외로 변환시켜서) 개발자에게 예외가 터졌음을 알려서 개발자가 빨리 대응하게 만드는 것이 정석이다.
'프로그래밍 언어 (プログラミング言語) > JAVA' 카테고리의 다른 글
Optional<T>의 탄생 배경 (0) | 2023.02.15 |
---|---|
JAVA에는 unsigned 자료형이 존재하지 않는다!! 단..... (0) | 2023.02.15 |
자바는 동적 할당(Dynamic Assignment)를 제공하지 못한다. (0) | 2023.01.20 |
자바에서 메모리를 절약하는 방법!! (0) | 2023.01.18 |
JAVA - 프로그래머는 객체 삭제가 불가능하다!!! 속지말자!!! (0) | 2023.01.18 |