Skip to content

[REFACTOR] 동아리 목록 카테고리로 조회시 에러 핸들링 추가 #269

Description

@ji-mim

📄 어떤 코드를 개선하고 싶나요?

ClubController 클래스에서

    @Operation(summary = "카테고리별 동아리 목록 조회", description = "특정 카테고리에 속한 동아리 목록을 조회합니다.")
    @ApiResponse(responseCode = "200", description = "조회 성공")
    @GetMapping(params = "category")
    public ResponseEntity<ClubListResponseDto> listClubsByCategory(
            @Parameter(description = "조회할 동아리 카테고리", required = true, example = "SPORTS") @RequestParam String category
    ) {
        ClubListResponseDto response = clubService.getClubByCategory(category);
        return ResponseEntity.ok(response);
    }

해당 API의 파라미터 값인 category 값이 ENUM 타입의 값과 일치하지 않을 때

ClubServiceImpl 클래스의

    @Override
    public ClubListResponseDto getClubByCategory(String category) {
        if (category.equals("ALL")) {
            return mapToResponse(clubRepository.findAllProjectedBy());
        }
        return mapToResponse(clubRepository.findSummariesByCategory(Category.valueOf(category)));
    }

메서드에서 Category.valueOf(category) 부분에서 에러가 발생하고 이 값이 핸들링 되지 않아서 500 에러를 반환하고 있습니다. 400 에러나 404 에러로 반환하도록 에러 핸들링이 필요해보입니다.

💡 왜 개선이 필요한가요?

에러 핸들링이 없어서 500에러를 반환하는데 이러면 어떤 부분에서 문제가 발생했는지 추적하기가 어려울 것 같습니다.

✅ 개선 아이디어

ENUM 타입이 valueOf로 매칭이 안될 때 IllegalArgumentException 가 발생되는데 이거 자체를 글로벌 에러 핸들러에서 처리할지 해당 API 만 핸들링하도록 하는 핸들러를 추가할지 생각해봐야할 것 같습니다.

🙋🏻 참고 자료

Image Image

Metadata

Metadata

Assignees

Labels

Type

Fields

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions