개발/부트캠프

본캠프 : 개인 과제(키오스크 만들기) 트러블 슈팅

EJ EJ 2025. 1. 20. 10:57

1. 개요

키오스크 만들기 과제(Lv.4)를 진행하며, 겪은 이슈를 다뤄보겠습니다.

 

2. 트러블 슈팅

● 배경

 Kiosk 클래스의 start 함수에 예외 처리가 안된 부분을 발견했습니다.

 

● 발단

 예외 처리가 되지 않아서 정해진 값 외의 숫자 또는 문자가 입력되었을 때 프로그램이 종료되었습니다.

 

● 전개

 계산기 과제 때 구현하지 못한 try catch문을 시도했으나 아래 코드에서 오류가 발생했습니다. 원인은 finally 때문이었습니다. finally는 예외의 발생 여부와 상관없이 무조건 실행되는 코드가 들어가는 블럭이어서 정확한 값이 입력이 되어도 다시 continue가 되었습니다.

 

● 위기

 finally를 삭제하였는데 catch에서 아래와 같이 위 내용이 멈추지 않고 계속 반복되었습니다.

 

● 절정

 원인은  menuInput의 값 버퍼를 비우지 않아서 처음 입력받은 값을 계속 유지하였기 때문입니다. 그래서 menuInput을 try 안에 넣고 catch에 sc.nextLine을 추가하였습니다. 또한, 정해진 숫자 외의 값을 받았을 때에도 예외 처리가 되도록 else if를 추가하였습니다.

 

● 결말

 즉, 정해진 숫자 외의 숫자가 입력되면 else if에서 처리하고 문자열이 입력되면 catch에서 처리하여 다시 값을 입력받도록 하였습니다.

 

3. 마무리

 이번 과제를 통해 배우고 적용한 try catch문을 다음에도 사용할 수 있겠습니다. 아쉬운 점은 콘솔에 출력되는 내용이 깔끔하면 좋겠습니다. 현재 버거 메뉴는 깔끔하게 나오지만 음료와 디저트 메뉴는 같은 함수로 출력했으나 간격이 맞지 않습니다. 해당 문자열의 길이가 너무 짧아서 그런 것 같은데 추후에 개선 방안을 생각해 보겠습니다.