인프런 커뮤니티 질문&답변

인프러너님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

상품 엔티티 개발(비즈니스 로직 추가)

NotEnoughStockException에 대해서 조금만 더 자세한 설명 부탁드려도 될까요?

21.12.08 09:38 작성

·

547

1

NotEnoughStockException에서 오버라이드를 해서 그냥 놔두는 이유를 조금만 더 명확하게 설명 부탁드려도 될까요?

그리고 5개를 오버라이드를 했는데 오버라이드를 할 수 있는 메소드들은 많이 있는데 그중에 어떤 메소드들을 오버라이드를 하는지, 그리고 그 메서드들을 오버라이드를 하는 이유와 마지막 한개는 필요가 없는 이유를 조금만 더 명확하게 알고 싶습니다.

답변 2

0

주영익님의 프로필 이미지

2023. 03. 17. 17:56

제가 Java를 잘 몰라서 그런지 영상을 여러 번 돌려봤는데 이해가 안 됩니다.

여기 답변을 보고 오래된 자바 책을 다시 꺼내 봤지만, 어떻게 검색 해봐야할지 몰라서 다시 질문 남깁니다. 아래 장면입니다.

"메시지 같은 걸 넘겨서 이걸 다 넘겨주고 메시지랑 플러스 이 예외가 발생한 어떤 근원적인 exception을 또 넣어서 이제 그 익셉션 트레이스가 쭉 나오게 할 수 있거든요."

RuntimeException에 있는 메서드를 추가 로직 없이 그대로 override하고 마지막 protected 메서드는 하나 지우셨는데요.

이렇게 해서 얻을 수 있는 추가 기능이 (override하지 않는 것 대비) 어떤 게 있나요?

그렇다 하더라도 마지막 메서드를 지우신 이유도 궁금하고요.

김영한님의 프로필 이미지
김영한
지식공유자

2023. 03. 18. 11:51

안녕하세요. 주영익님

마지막에 있는 protected는 여기서 사용하지 않아서 단순하게 지웠습니다. (크게 의미가 있는 것은 아닙니다.)

여기서 핵심은 message와 cause입니다.

자바 예외에서 부모 타입에 message와 cause가 있는데요. 여기에 오류 메시지와 어떤 예외 때문에 이 예외가 발생했는지를 넘겨주면 예외 트레이스를 확인할 때 오류 메시지는 물론이고, 앞서 발생한 예외도 함께 출력할 수 있습니다.

만약 앞서 발생한 예외가 없다면 cause를 사용하지 않습니다.

이 부분은 예외를 하나 강제로 발생시켜서 cause에 넣어보신 다음에 e.printStacktrace()를 호출해보시면 이해가 되실거에요.

감사합니다.

주영익님의 프로필 이미지

2023. 03. 19. 09:28

왜 질문을 이해 못 하셨는지 이제 알았습니다. 기초적인 문법인데 혼란이 왔어요.

다른 언어에서 custom runtime exception을 만들 때, 부모와 동일한 기능을 하면 생성자를 만들지 않아도 되는데(스크립트형 언어들처럼 생성자 메서드가 부모와 동일한 경우, 즉 클래스명을 생성자로 쓰지 않는 경우), 생각해보니 java에서는 너무 당연하게 자식 클래스의 생성자가 필요하네요.

그래서 당장 NotEnoughStockException(String message)만 사용하지만, 앞으로 사용될 수도 있는 생성자를 미리 만들어두셨구나 하고 이해했습니다.

혼란한 댓글 남겨 죄송합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

2021. 12. 08. 23:17

안녕하세요. 아버지님

이 부분은 자바의 예외처리에 대한 기본기를 학습하셔야 합니다.

자바 예외처리에 대해서 더 학습해보시길 권장드립니다.

감사합니다.