개발/부트캠프

본캠프 : 개인 과제(일정 관리 앱 만들기) 트러블 슈팅

EJ EJ 2025. 2. 3. 15:37

1. 개요

일정 관리 앱 만들기 과제를 진행하며, 겪은 이슈를 다뤄보겠습니다.

 

2. 트러블 슈팅

 

(1) NullPointException

 

● 배경

단건 일정 수정 시 상태코드 500 서버 에러 발생

 

● 원인

'schedule.getPassword()' is null로 비밀번호 데이터를 불러올 수 없음

schedule은 scheduleRepository.findById(id)를 통해 데이터를 가져오는데 그렇다면 해당 코드에 문제가 있을 것으로 생각함

findById(id)의 sql query코드에서 비밀번호를 가져오는 코드가 없음

 

● 해결방법

rs.getString("password")를 추가하여 schedule.getPassword()가 정상적으로 작동함

 

 

(2) Refactoring - 전체 일정 조회 시 요청 데이터가 없을 경우 예외 발생하기

 

● 수정 전

기존 코드에서는 요청 데이터가 없을 경우 빈 리스트를 반환( 200 OK [ ] )

데이터가 없을 경우 예외를 발생시키도록 코드 리팩토링 진행

 

● 수정 후

 List<ScheduleResponseDto> schedules 변수로 변환 
② if문으로 리스트가 비어 있을 경우 ResponseStatusException( 404 NOT FOUND ) 발생

 

3. 마무리

이번 과제를 통해서 CRUD와 3 Layered Architecture의 동작 원리를 이해할 수 있었습니다. 데이터베이스를 연동하여 API 실행 및 테스트를 통해 결과값을 확인해 보았습니다. 아직 상태 메시지 확인 방법과 모든 예외 처리에 대한 방법을 모르지만 다음 단계에서 배워가고자 합니다.

 

3 Layered Architecture

3 Layered Architecture