상황

Postman 작성 중 응답 처리 방식이 일관되지 않아 혼선이 있었고, 에러 발생 시 throw로 처리할지 DTO 응답으로 처리할지에 대한 기준이 없는 상태였음

고려 사항

  1. throw 를 사용할 경우 이후 로직이 실행되지 않으므로, 프론트에 상세한 메시지를 전달하기 어렵다.
  2. DTO로 응답하면 메시지는 전달 가능하지만 실제 예외 상황을 포착하거나 로깅하는 데 약할 수 있다.
  3. 프론트에서 구분된 처리 방식이 필요함 → 사용자 실수인지, 시스템 오류인지 구분이 가능해야 한다.

의사 결정

구현 방식

DTO 응답)

image.png

예외 처리)

 // 동영상 정지 시 currentposition 저장 메서드
    @Transactional
    public PauseResponse createVideoViewHistory(Long userId, Long videoId, Long currentPosition) {
        Long videoLength = videoRepository.findVideoLengthById(videoId);

        if (videoLength == null) {
            throw new EntityNotFoundException("해당 Video가 존재하지 않습니다.");
        }

결과 및 회고