You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
투표 참여 기능을 개발 중인데, 예외 처리에 대한 고민이 생겼다. 기능의 규칙은 다음과 같다.
사용자는 오직 진행 중인 투표에만 참여할 수 있어야 한다. 사용자가 이미 종료된 투표에 참여하려고 시도한다면, 이때 예외를 발생시켜야 한다. 이런 상황에서, 예외 발생은 도메인과 서비스 중 어느 곳에서 처리해야 하는 것이 적절할까?
예시는 실제 로직보다 간소화했습니다.
1. 도메인에서 예외 발생
Vote
public void validateVoting() {
final LocalDateTime now = LocalDateTime.now();
if (this.endTime.isAfter(now)) {
throw new BusinessException(ErrorCode.VOTE_CANNOT_PARTICIPATE);
}
}
VoteService
public void participateVote(
final Long voteId,
final Long itemId,
final Long memberId,
) {
final Vote vote = voteReader.read(voteId);
vote.validateVoting();
voteManager.participate(vote, memberId, itemId);
}
2. 서비스에서 예외 발생
Vote
public boolean isVoting() {
final LocalDateTime now = LocalDateTime.now();
return this.endTime.isAfter(now);
}
VoteService
public void participateVote(
final Long voteId,
final Long itemId,
final Long memberId,
) {
final Vote vote = voteReader.read(voteId);
if (!vote.isVoting()) {
throw new BusinessException(ErrorCode.VOTE_CANNOT_PARTICIPATE);
}
voteManager.participate(vote, memberId, itemId);
}
The text was updated successfully, but these errors were encountered:
상황 설명
투표 참여 기능을 개발 중인데, 예외 처리에 대한 고민이 생겼다. 기능의 규칙은 다음과 같다.
사용자는 오직 진행 중인 투표에만 참여할 수 있어야 한다. 사용자가 이미 종료된 투표에 참여하려고 시도한다면, 이때 예외를 발생시켜야 한다. 이런 상황에서, 예외 발생은 도메인과 서비스 중 어느 곳에서 처리해야 하는 것이 적절할까?
1. 도메인에서 예외 발생
Vote
VoteService
2. 서비스에서 예외 발생
Vote
VoteService
The text was updated successfully, but these errors were encountered: