Replies: 1 comment
|
표 정리 깔끔하네요! 수고하셨습니당 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
자바 예외 이해
1️⃣ 예외 계층
2️⃣ 예외 기본 규칙
-예외는 폭탄 돌리기와 같다고한다. 잡아서 처리하거나 처리할 수 없으면 밖으로 던져야한다.
✅ 예외에 대해서는 2가지 기본 규칙을 기억하라
✅ 참고 : 예외를 처리하고 못하고 계속 던지면 어떻게 될까?
3️⃣ 체크 예외 기본 이해
✅ 체크 예외 전체 코드
Exception을 상속받은 예외는 체크 예외가 한다.
MyCheckedException는 Exception을 상속받음. Exception을 상속받으면 체크 예외가 된다.
참고로 RuntimeException을 상속받으면 언체크 예외가 된다. 이런 규칙은 자바 언어에서 문법으로 정한 것이다.
예외가 제공하는 여러가지 기본 기능이 있는데, 그 중에 오류 메세지를 보관하는 기능도 있다.
생성자를 통해서 해당 기능을 그대로 사용하면 편리한다.
✅실행 순서를 분석
Repository.call()에서MyUncheckedException예외가 발생하고, 그 예외를Service.callCatch()에서 잡는 것을 확인할 수 있다.log.info("예외 처리, message={}", e.getMessage(), e);여기서마지막에있는e부 분이다.✅ 체크 예외를 잡아서 처리하는 코드
✅ catch는 해당 타입과 그 하위 타입을 모두 잡을 수 있다.
✅ 예외를 처리하지 않고, 밖으로 던지는 코드
service.callThrow()에서 예외를 처리하지 않고, 밖으로 던졌기 때문에 예외가 테스트 메서드까지 올라온다.
테스트에서 기대한 것 처럼 MyCheckedException 예외가 던져지면 성공
실행 순서
✅ 체크 예외를 밖으로 던지는 코드
method() throws 예외을 사용해서 밖으로 던질 예외를 필수로 지정해주어 야 한다. 여기서는MyCheckedException을 밖으로 던지도록 지정해주었다.✅ 체크 예외를 밖으로 던지지 않으면 컴파일 오류 발생
throws를 지정해서 예외를 밖으로 던진다는 선언을 필수로 해주어야 한다.✅ 참고로 체크 예외를 밖으로 던지는 경우에도 해당 타입과 그 하위 타입을 모두 던질 수 있다.
🔗 출처
All reactions