Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

checked exception과 unchecked exception의 차이? #3

Open
jun108059 opened this issue Sep 6, 2022 · 3 comments
Open

checked exception과 unchecked exception의 차이? #3

jun108059 opened this issue Sep 6, 2022 · 3 comments
Labels
🔥 in discussion 토론 중인 내용입니다!

Comments

@jun108059
Copy link
Member

No description provided.

@lsj8367
Copy link
Contributor

lsj8367 commented Sep 7, 2022

제가 이걸 공부한 개념으로 정리하면
checked exceptionException을 포함하고 RuntimeException을 상속받지 않은 클래스들 입니다.
unchecked exceptionRuntimeException을 상속한 클래스들입니다.

checked exceptionthrows를 이용하여 던지게 선언하면 반드시 사용하는 곳에서 아무 조치도 하지않으면 컴파일 에러가 발생하고 try~catchthrows로 더 상위의 메소드에 던지거나 둘중 하나를 무조건 처리 해야합니다.

반대로 unchecked exceptionthrows를 해도 컴파일 에러로 잡히지 않습니다.
그런데 throws를 해주는건 명시적으로 ~~~한 에러를 던진다. 라는 의미로 가독성을 높이는 것이라고 볼 수 있을것 같습니다.

spring 에서는 @Transactional의 기본값으로 checked exception이면 rollback을 하지 않고,
unchecked exception이면 rollback을 수행하는데,

이는 고정적인 개념이 아니라, 어디까지나 기본값이고 개발자가 원하면 어노테이션 안의 rollbackFor나, noRollbackFor 등을 통해 checked exceptionrollback하게 변경하거나 unchecked exceptionrollback하지 않게 바꿀 수 있습니다.

로 정리가 됩니다.

틀린 부분이 많을 것 같은데 지적해주시면 환영입니다. 🙏

@gnoyes-mik
Copy link
Member

승재님 의견처럼 _spring 에서는 @transactional의 기본값으로 checked exception이면 rollback을 하지 않고,
unchecked exception이면 rollback을 수행하는데, ~~~_ 에 저도 같은 생각입니다

관련 정보에 대해서 더 찾아봤었었는데 Spring에서 최초에 @transactional 을 구현할 때 EJB 스펙을 참고해서 만들다 보니 기본값을 저렇게 설정했다고 알고있어요 ㅎㅎ

또, 추가적으로 CheckedException을 Handling하는 방법에 대해서 개인적인 견해를 덧붙이자면 CheckedException이 발생하는 부분이 있는 경우 최대한 구체적인 UncheckedException을 발생시키는 것이 좋은 방향이라고 생각합니다

혹시 제가 잘못 알고있는 정보가 있으면 피드백 주시면 감사하겠습니다🙂

@jun108059 jun108059 added the 🔥 in discussion 토론 중인 내용입니다! label Sep 7, 2022
@youngreal
Copy link
Member

youngreal commented Sep 7, 2022

두분이 설명을 잘해주신것 같아서 저도 이전에 공부했던 트랜잭션 롤백 내용 올려보겠습니다
Unchecked Exception 롤백 연습코드

자바의 check exception, uncheck excpeption 왜그렇게 설계된걸까?
오라클 문서

설계 의도

  • checked exception은 메서드를 호출하는사람이 메서드가 던질수있는 예외에대해 인식하게끔 하고, 대처(복구)할수있게끔 의도함
  • unchecked exception의 발생원인은 너무나 다양하고 모든메서드에 예외를 추가하면 명확성이 떨어지기때문에 꼭잡지 않아도 되게끔 의도함
  • 문서결론 : 예외를 복구할수있는경우 checked exception, 예외를 복구할수없는경우 unchecked exception을 사용해라

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔥 in discussion 토론 중인 내용입니다!
Projects
None yet
Development

No branches or pull requests

4 participants