Skip to content

Commit abe2a50

Browse files
committed
[feat] 예외 처리 구조 변경
1 parent 8c47e86 commit abe2a50

48 files changed

Lines changed: 476 additions & 285 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.arom.with_travel.domain.accompanies.error;
2+
3+
import com.arom.with_travel.global.exception.error.BaseCode;
4+
import com.arom.with_travel.global.exception.error.ErrorDisplayType;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Getter;
7+
import org.springframework.http.HttpStatus;
8+
9+
@Getter
10+
@AllArgsConstructor
11+
public enum AccompanyErrorCode implements BaseCode {
12+
ACCOMPANY_NOT_FOUND(HttpStatus.BAD_REQUEST, "ACC-0000", "해당 동행이 존재하지 않습니다.", ErrorDisplayType.POPUP),
13+
ACCOMPANY_ALREADY_APPLIED(HttpStatus.BAD_REQUEST, "ACC-0001", "이미 신청한 동행입니다.", ErrorDisplayType.POPUP),
14+
ACCOMPANY_POST_ERROR(HttpStatus.BAD_REQUEST, "ACC-0002", "동행 입력이 올바르지 않습니다.", ErrorDisplayType.POPUP),
15+
ACCOMPANY_ALREADY_LIKED(HttpStatus.BAD_REQUEST, "ACC-0003", "좋아요를 이미 눌렀습니다.", ErrorDisplayType.POPUP),
16+
ACCOMPANY_COMMENT_NOT_FOUND(HttpStatus.BAD_REQUEST, "ACC-0004", "해당 동행 댓글을 찾을 수 없습니다.", ErrorDisplayType.POPUP),
17+
ACCOMPANY_COMMENT_NO_PERMISSION_UPDATE(HttpStatus.BAD_REQUEST, "ACC-0005", "댓글을 수정할 수 없습니다.", ErrorDisplayType.POPUP),
18+
ACCOMPANY_LIKES_UNABLE_DECREASE(HttpStatus.BAD_REQUEST, "ACC-0006", "좋아요 수가 0보다 작습니다.", ErrorDisplayType.POPUP),
19+
;
20+
21+
private final HttpStatus status;
22+
private final String code;
23+
private final String message;
24+
private final ErrorDisplayType displayType;
25+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.arom.with_travel.domain.accompanies.error;
2+
3+
import com.arom.with_travel.global.exception.BaseException;
4+
import com.arom.with_travel.global.exception.error.BaseCode;
5+
import com.arom.with_travel.global.exception.error.ErrorCode;
6+
7+
public class AccompanyException extends BaseException {
8+
public AccompanyException(BaseCode code) {
9+
super(code);
10+
}
11+
}

src/main/java/com/arom/with_travel/domain/accompanies/model/AccompanyComment.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.arom.with_travel.domain.accompanies.model;
22

33
import com.arom.with_travel.domain.accompanies.dto.request.AccompanyNewCommentRequest;
4+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
45
import com.arom.with_travel.domain.member.Member;
56
import com.arom.with_travel.global.entity.BaseEntity;
67
import com.arom.with_travel.global.exception.BaseException;
@@ -11,6 +12,8 @@
1112
import lombok.Getter;
1213
import lombok.NoArgsConstructor;
1314

15+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_COMMENT_NO_PERMISSION_UPDATE;
16+
1417
@Entity
1518
@Getter
1619
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@@ -43,7 +46,7 @@ public void updateContent(String newContent) {
4346

4447
public void validateIsCommentWriter(String memberId) {
4548
if(!member.getOauthId().equals(memberId)){
46-
throw BaseException.from(ErrorCode.ACCOMPANY_COMMENT_NO_PERMISSION_UPDATE);
49+
throw AccompanyException.from(ACCOMPANY_COMMENT_NO_PERMISSION_UPDATE);
4750
}
4851
}
4952

src/main/java/com/arom/with_travel/domain/accompanies/model/AccompanyType.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.arom.with_travel.domain.accompanies.model;
22

3+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
34
import com.arom.with_travel.global.exception.BaseException;
45
import com.fasterxml.jackson.annotation.JsonCreator;
56
import com.fasterxml.jackson.annotation.JsonValue;
@@ -8,7 +9,7 @@
89

910
import java.util.Arrays;
1011

11-
import static com.arom.with_travel.global.exception.error.ErrorCode.ACCOMPANY_POST_ERROR;
12+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_POST_ERROR;
1213

1314
@Getter
1415
@AllArgsConstructor
@@ -31,6 +32,6 @@ public static AccompanyType fromAccompanyType(String val) {
3132
return Arrays.stream(values())
3233
.filter(type -> type.getType().equals(val))
3334
.findAny()
34-
.orElseThrow(() -> BaseException.from(ACCOMPANY_POST_ERROR));
35+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_POST_ERROR));
3536
}
3637
}

src/main/java/com/arom/with_travel/domain/accompanies/model/City.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.arom.with_travel.domain.accompanies.model;
22

3+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
34
import com.arom.with_travel.global.exception.BaseException;
45
import com.fasterxml.jackson.annotation.JsonCreator;
56
import com.fasterxml.jackson.annotation.JsonValue;
@@ -8,7 +9,7 @@
89

910
import java.util.Arrays;
1011

11-
import static com.arom.with_travel.global.exception.error.ErrorCode.ACCOMPANY_POST_ERROR;
12+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_POST_ERROR;
1213

1314
@Getter
1415
@AllArgsConstructor
@@ -25,6 +26,6 @@ public static City fromCity(String val) {
2526
return Arrays.stream(values())
2627
.filter(type -> type.getName().equals(val))
2728
.findAny()
28-
.orElseThrow(() -> BaseException.from(ACCOMPANY_POST_ERROR));
29+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_POST_ERROR));
2930
}
3031
}

src/main/java/com/arom/with_travel/domain/accompanies/model/Continent.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.arom.with_travel.domain.accompanies.model;
22

3-
import com.arom.with_travel.global.exception.BaseException;
3+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
44
import com.fasterxml.jackson.annotation.JsonCreator;
55
import com.fasterxml.jackson.annotation.JsonValue;
66
import lombok.AllArgsConstructor;
77
import lombok.Getter;
88

99
import java.util.Arrays;
1010

11-
import static com.arom.with_travel.global.exception.error.ErrorCode.ACCOMPANY_POST_ERROR;
11+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_POST_ERROR;
12+
1213

1314
@Getter
1415
@AllArgsConstructor
@@ -29,6 +30,6 @@ public static Continent fromContinent(String val) {
2930
return Arrays.stream(values())
3031
.filter(type -> type.getName().equals(val))
3132
.findAny()
32-
.orElseThrow(() -> BaseException.from(ACCOMPANY_POST_ERROR));
33+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_POST_ERROR));
3334
}
3435
}

src/main/java/com/arom/with_travel/domain/accompanies/model/Country.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.arom.with_travel.domain.accompanies.model;
22

3-
import com.arom.with_travel.global.exception.BaseException;
3+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
44
import com.fasterxml.jackson.annotation.JsonCreator;
55
import com.fasterxml.jackson.annotation.JsonValue;
66
import lombok.AllArgsConstructor;
77
import lombok.Getter;
88

99
import java.util.Arrays;
1010

11-
import static com.arom.with_travel.global.exception.error.ErrorCode.ACCOMPANY_POST_ERROR;
11+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_POST_ERROR;
12+
1213

1314
@Getter
1415
@AllArgsConstructor
@@ -22,6 +23,6 @@ public static Country fromCountry(String val) {
2223
return Arrays.stream(values())
2324
.filter(type -> type.getName().equals(val))
2425
.findAny()
25-
.orElseThrow(() -> BaseException.from(ACCOMPANY_POST_ERROR));
26+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_POST_ERROR));
2627
}
2728
}

src/main/java/com/arom/with_travel/domain/accompanies/service/AccompanyApplyService.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package com.arom.with_travel.domain.accompanies.service;
22

33
import com.arom.with_travel.domain.accompanies.dto.event.AccompanyAppliedEvent;
4+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
45
import com.arom.with_travel.domain.accompanies.model.Accompany;
56
import com.arom.with_travel.domain.accompanies.model.AccompanyApply;
67
import com.arom.with_travel.domain.accompanies.repository.accompany.AccompanyRepository;
78
import com.arom.with_travel.domain.accompanies.repository.accompany.AccompanyApplyRepository;
89
import com.arom.with_travel.domain.member.Member;
910
import com.arom.with_travel.domain.member.repository.MemberRepository;
10-
import com.arom.with_travel.global.exception.BaseException;
11-
import com.arom.with_travel.global.exception.error.ErrorCode;
1211
import lombok.RequiredArgsConstructor;
1312
import lombok.extern.slf4j.Slf4j;
1413
import org.springframework.context.ApplicationEventPublisher;
1514
import org.springframework.stereotype.Service;
1615
import org.springframework.transaction.annotation.Transactional;
1716

17+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_NOT_FOUND;
18+
import static com.arom.with_travel.domain.member.error.MemberErrorCode.MEMBER_NOT_FOUND;
19+
1820
@Service
1921
@RequiredArgsConstructor
2022
@Slf4j
@@ -38,12 +40,12 @@ public String applyAccompany(Long accompanyId, String oauthId){
3840

3941
private Member loadMemberOrThrow(String oauthId){
4042
return memberRepository.findByOauthId(oauthId)
41-
.orElseThrow(() -> BaseException.from(ErrorCode.MEMBER_NOT_FOUND));
43+
.orElseThrow(() -> AccompanyException.from(MEMBER_NOT_FOUND));
4244
}
4345

4446
private Accompany loadAccompanyOrThrow(Long accompanyId){
4547
return accompanyRepository.findById(accompanyId)
46-
.orElseThrow(() -> BaseException.from(ErrorCode.ACCOMPANY_NOT_FOUND));
48+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_NOT_FOUND));
4749
}
4850

4951
}

src/main/java/com/arom/with_travel/domain/accompanies/service/AccompanyCommentService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.arom.with_travel.domain.accompanies.service;
22

3+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
34
import com.arom.with_travel.domain.accompanies.model.Accompany;
45
import com.arom.with_travel.domain.accompanies.repository.accompany.AccompanyRepository;
56
import com.arom.with_travel.domain.accompanies.model.AccompanyComment;
@@ -8,6 +9,7 @@
89
import com.arom.with_travel.domain.accompanies.dto.response.AccompanyCommentSliceResponse;
910
import com.arom.with_travel.domain.accompanies.repository.accompany.AccompanyCommentRepository;
1011
import com.arom.with_travel.domain.member.Member;
12+
import com.arom.with_travel.domain.member.error.MemberException;
1113
import com.arom.with_travel.domain.member.repository.MemberRepository;
1214
import com.arom.with_travel.global.exception.BaseException;
1315
import com.arom.with_travel.global.exception.error.ErrorCode;
@@ -21,6 +23,10 @@
2123

2224
import java.time.LocalDateTime;
2325

26+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_COMMENT_NOT_FOUND;
27+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_NOT_FOUND;
28+
import static com.arom.with_travel.domain.member.error.MemberErrorCode.MEMBER_NOT_FOUND;
29+
2430
@Service
2531
@RequiredArgsConstructor
2632
@Slf4j
@@ -63,22 +69,22 @@ public void deleteComment(Long accompanyCommentId, String oauthId){
6369

6470
private Member loadMemberOrThrow(String oauthId){
6571
return memberRepository.findByOauthId(oauthId)
66-
.orElseThrow(() -> BaseException.from(ErrorCode.MEMBER_NOT_FOUND));
72+
.orElseThrow(() -> MemberException.from(MEMBER_NOT_FOUND));
6773
}
6874

6975
private Accompany loadAccompanyOrThrow(Long accompanyId){
7076
return accompanyRepository.findById(accompanyId)
71-
.orElseThrow(() -> BaseException.from(ErrorCode.ACCOMPANY_NOT_FOUND));
77+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_NOT_FOUND));
7278
}
7379

7480
private AccompanyComment loadAccompanyCommentOrThrow(Long accompanyCommentId){
7581
return accompanyCommentRepository.findById(accompanyCommentId)
76-
.orElseThrow(() -> BaseException.from(ErrorCode.ACCOMPANY_COMMENT_NOT_FOUND));
82+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_COMMENT_NOT_FOUND));
7783
}
7884

7985
private void isAccompanyExist(Long accompanyId){
8086
if(!accompanyRepository.existsById(accompanyId)){
81-
throw BaseException.from(ErrorCode.ACCOMPANY_NOT_FOUND);
87+
throw AccompanyException.from(ACCOMPANY_NOT_FOUND);
8288
}
8389
}
8490
}

src/main/java/com/arom/with_travel/domain/accompanies/service/AccompanyService.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.arom.with_travel.domain.accompanies.dto.response.AccompanyBriefResponse;
44
import com.arom.with_travel.domain.accompanies.dto.response.CursorSliceResponse;
5+
import com.arom.with_travel.domain.accompanies.error.AccompanyException;
56
import com.arom.with_travel.domain.accompanies.model.Accompany;
67
import com.arom.with_travel.domain.accompanies.dto.request.AccompanyPostRequest;
78
import com.arom.with_travel.domain.accompanies.dto.response.AccompanyDetailsResponse;
@@ -13,6 +14,7 @@
1314
import com.arom.with_travel.domain.likes.Likes;
1415
import com.arom.with_travel.domain.likes.repository.LikesRepository;
1516
import com.arom.with_travel.domain.member.Member;
17+
import com.arom.with_travel.domain.member.error.MemberException;
1618
import com.arom.with_travel.domain.member.repository.MemberRepository;
1719
import com.arom.with_travel.global.exception.BaseException;
1820
import com.arom.with_travel.global.exception.error.ErrorCode;
@@ -25,6 +27,9 @@
2527
import java.util.List;
2628
import java.util.Optional;
2729

30+
import static com.arom.with_travel.domain.accompanies.error.AccompanyErrorCode.ACCOMPANY_NOT_FOUND;
31+
import static com.arom.with_travel.domain.member.error.MemberErrorCode.MEMBER_NOT_FOUND;
32+
2833
@Service
2934
@RequiredArgsConstructor
3035
@Slf4j
@@ -82,12 +87,12 @@ public CursorSliceResponse<AccompanyBriefResponse> showAccompaniesBrief(Country
8287

8388
private Member loadMemberOrThrow(String oauthId){
8489
return memberRepository.findByOauthId(oauthId)
85-
.orElseThrow(() -> BaseException.from(ErrorCode.MEMBER_NOT_FOUND));
90+
.orElseThrow(() -> MemberException.from(MEMBER_NOT_FOUND));
8691
}
8792

8893
private Accompany loadAccompanyOrThrow(Long accompanyId){
8994
return accompanyRepository.findById(accompanyId)
90-
.orElseThrow(() -> BaseException.from(ErrorCode.ACCOMPANY_NOT_FOUND));
95+
.orElseThrow(() -> AccompanyException.from(ACCOMPANY_NOT_FOUND));
9196
}
9297

9398
private Optional<Likes> loadLikes(Accompany accompany, Member member) {

0 commit comments

Comments
 (0)