작성
·
559
1
답변 2
0
제가 Java를 잘 몰라서 그런지 영상을 여러 번 돌려봤는데 이해가 안 됩니다.
여기 답변을 보고 오래된 자바 책을 다시 꺼내 봤지만, 어떻게 검색 해봐야할지 몰라서 다시 질문 남깁니다. 아래 장면입니다.
"메시지 같은 걸 넘겨서 이걸 다 넘겨주고 메시지랑 플러스 이 예외가 발생한 어떤 근원적인 exception을 또 넣어서 이제 그 익셉션 트레이스가 쭉 나오게 할 수 있거든요."
RuntimeException에 있는 메서드를 추가 로직 없이 그대로 override하고 마지막 protected 메서드는 하나 지우셨는데요.
이렇게 해서 얻을 수 있는 추가 기능이 (override하지 않는 것 대비) 어떤 게 있나요?
그렇다 하더라도 마지막 메서드를 지우신 이유도 궁금하고요.
왜 질문을 이해 못 하셨는지 이제 알았습니다. 기초적인 문법인데 혼란이 왔어요.
다른 언어에서 custom runtime exception을 만들 때, 부모와 동일한 기능을 하면 생성자를 만들지 않아도 되는데(스크립트형 언어들처럼 생성자 메서드가 부모와 동일한 경우, 즉 클래스명을 생성자로 쓰지 않는 경우), 생각해보니 java에서는 너무 당연하게 자식 클래스의 생성자가 필요하네요.
그래서 당장 NotEnoughStockException(String message)만 사용하지만, 앞으로 사용될 수도 있는 생성자를 미리 만들어두셨구나 하고 이해했습니다.
혼란한 댓글 남겨 죄송합니다.
0
안녕하세요. 주영익님
마지막에 있는 protected는 여기서 사용하지 않아서 단순하게 지웠습니다. (크게 의미가 있는 것은 아닙니다.)
여기서 핵심은 message와 cause입니다.
자바 예외에서 부모 타입에 message와 cause가 있는데요. 여기에 오류 메시지와 어떤 예외 때문에 이 예외가 발생했는지를 넘겨주면 예외 트레이스를 확인할 때 오류 메시지는 물론이고, 앞서 발생한 예외도 함께 출력할 수 있습니다.
만약 앞서 발생한 예외가 없다면 cause를 사용하지 않습니다.
이 부분은 예외를 하나 강제로 발생시켜서 cause에 넣어보신 다음에 e.printStacktrace()를 호출해보시면 이해가 되실거에요.
감사합니다.