Title : 여행 여정을 기록과 관리하는 SNS 서비스 1단계

 

 이번 토이프로젝트는 조를 새로 배정 받아서 5인 1조로 과제를 수행했다. 첫 조원분들과 만나는 자리에서 회의를 간단하게 진행했는데 다 프로젝트 경험이 여러 번 있으시고, 관련 지식도 많은 팀원 분들을 만났다. 토이프로젝트 진행은 화면에 출력하는 view 1명, 여행관련 2명, 여정관련 2명으로 나눠서 진행했고 나는 여정 파트를 맡았다. 개발 일정과 프로젝트 기획은 아래와 같다.

 

 

[개발 일정]

 

 

[팀 프로젝트 구상도]

 

 제안서에는 여행속에 여정이 배열로 존재하는 구성이었는데, 우리 조는 여행 파일 따로, 여정 파일 따로 관리하기로 하였고, 여정을 추가, 읽기 위해서는 여행 파일의 인덱스가 필요하다는 특징이 있다. 그렇게 구조를 설계하고 각자 개발에 들어갔다. 나는 이번이 여럿이서 하는 첫 프로젝트여서 협업이 어색했다. 다들 나보다 잘 하셔서 설계하는 내용을 경청하고 배웠던 시간이었다. 또 같은 여정을 개발하는 팀원분께서 내가 이해되지 않은 부분을 따로 시간 내서 설명해주시고, git 관련 이슈도 잘 해결해주셨다.

 

[토이프로젝트 순서도]

 

여정에서의 예외처리

 기억에 남는 부분은 예외처리를 한 부분이다. 첫 토이프로젝트에서는 여행, 여정 파일을 Json, Csv로 관리하는 설정인데 이 과정에서 발생할 수 있는 예외를 다음과 같이 정의했다.

 

1. JSON, CSV 파일을 읽을 때, 각 형식에 알맞지 않은 경우

2. 여정을 추가할 때, 여정을 추가하려는 여행 파일이 존재하지 않는 경우

3. 여정을 추가할 때, 여행 일정에 알맞지 않은 여정을 추가하려는 경우

 

 위 3개의 예외를 핸들링하면서 예외에는 체크 예외와 언체크 예외가 존재한다는 것을 알게되었다. FILE IO EXCEPTION을 캐치하고 평소와 같이 throw new 키워드를 작성해서 RunTime Exception을 던졌었는데, CSV Parse 관련 Exception은 File IO를 상속받았기에 반드시 처리를 해줘야만 했다. 나는 뭣도 모르고 그냥 한꺼번에 RunTime Exception을 상속받아서 처리하면 깔끔하게 처리가 되길래 하고 나서도 찜찜했기에 그룹스터디 시간 멘토링 때 멘토님에게 여쭤봤다.

 

1. 예외처리는 예민할 정도로 고려해야 한다.

2. File IO 관련 예외를 RunTime Exception으로 처리하는 방법도 하나의 방법이다.

3. 위와 같은 예외의 경우 백엔드 개발자 입장에선 에러를 내는게 최선이다.

 

라는 답을 들었다. 1번의 경우 이런 것 까지 예외를 처리해? 라는 말을 들을 정도로 단단묵직하게 예외를 고려해야 할 것이고, 가볍게 생각해선 안되는 느낌이다. 2번 3번의 경우 File IO는 체크예외라서 이를 상속받는 모든 예외는 컴파일러에서 한 번 걸러지게 되는데 개발자 입장에서는 프로그램이 실행되는 도중에 오류의 원인인  .json, .csv 파일을 당장 열어서 해결할 것 도 아니므로 RunTime Exception으로 처리하는 방법도 하나의 방법이라고 알려주셨다. Spring 에서는 ExceptionHandler를 사용하고, 값 검증에는 Validation을 사용하기에 그냥 예외에는 어떤 종류가 있는지도 모르고 무작정 던지기만 했었는데 이번 기회에 가볍게라도 알게 되었다.