2023-java-study / book-study

북 스터디 기록 레포지토리
0 stars 0 forks source link

[item 75] 예외의 문서화 #166

Open NuhGnod opened 12 months ago

NuhGnod commented 12 months ago

p.404 실패 순간을 포착하려면 발생한 예외에 관려된 모든 매개변수와 필드의 값을 실패 메시지에 담아야한다.

질문 이슈는 아닌데요, 이 문장을 읽고 개발자가 작성하는 custom예외 같은 경우 위 문장을 적용한다면 어느 수준까지 메시지를 작성하면 좋을지 얘기 해보면 좋을 것 같았습니다!

gmelon commented 11 months ago

발생한 예외와 관련된 이라는 말이 있는걸로 보아 말그대로 예외의 발생과 연관되어있는 값들을 모두 포함시키면 되지 않을까 생각합니다.

저는 예외가 값을 받도록 구현한 경우는 한번정도 있었는데 알림 발송을 위해 필요한 상수들이 정의되어 있고 인자를 필요한 만큼 받아 String.format()을 수행하고 알림 발송하는 로직에서 인자가 적절하게 들어오지 않으면 아래와 같은 예외를 던지도록 했었습니다.

public class IllegalNotificationArgumentCountException extends InternalServerException {

    private static final String MESSAGE_FORMAT = "알림 발송을 위해 %d개의 인자가 필요하지만, %d개의 인자만 전달되었습니다.";

    public IllegalNotificationArgumentCountException(int expectedArgsCount, int actualArgsCount) {
        super(String.format(MESSAGE_FORMAT, expectedArgsCount, actualArgsCount));
    }

}

기존에 필요한 인자와 입력된 인자를 받도록 구현했었습니다. 만약 이 경우와 달리 (리스트의 size 등) 인스턴스의 상태가 예외 발생에 영향을 주는 경우라면 해당 필드도 같이 담으면 좋을 것 같네요!

image
ssstopeun commented 11 months ago

구체적으로 생각해보지는 않았는데 보안사항이 아닌 선에서 이 예외가 발생했을 때 이 예외에 직접적인 원인이 되는 정보들? 정도로 생각했습니다. 실패 메세지를 보고 식별이 될 정도로요.

gmelon commented 11 months ago

검사 예외 vs 커스텀 예외

https://tecoble.techcourse.co.kr/post/2020-08-17-custom-exception/