배경 : 키오스크 필수과제 Level.3에서 요구하는 유효하지 않은 입력에 대해 오류메시지 출력하기 코드 구현을 시도함.
발단 :
처음 구현 한 코드->
k = sc.nextInt();
...
else if (k >= num) {
throw new IllegalArgumentException("메뉴에 있는 번호를 입력하세요); }
| 자료형 | 역할 |
|---|---|
| k : int | 입력 변수 |
| num : int | 마지막 메뉴 번호 변수 |
사용자에게 입력받은 번호를 정수형 k 변수에 넣어, 마지막 메뉴번호 이상을 입력하면 오류메시지를 출력하는 예외처리를 구현하려 했으나 실패.
전개 : 에러의 원인 검색 후, 메인에서 kiosk.start()를 try-catch문으로 감쌌으나 일시적으로 해결, 하지만 에러 처리 후 프로그램이 바로 종료되었고, 과제 요구 사항과 맞지 않았음.
위기 : 단순히 에러를 if문으로 처리하기보다 다른 구현방식이 있나 찾아보기로 함.
절정 : 에러 원인보다 에러 개념과 종류를 공부해보기로 함. 그 중 나한테 필요한 예외처리는, 프로그램이 요구하는 것은 nextInt() 정수형이지만 문자형을 입력한 경우의 InputMismatchException 라는 에러였고, 애초에 내가 구현하고자 하는 예외처리는 사용자가 프로그램의 요구에 맞게 정수를 입력했으므로, 프로그램상 에러가 아니었음.

결말 :
최종 구현 코드-> 메뉴번호 이상을 입력한 경우는 단순한 출력문으로 오류메시지를 띄우고, 정수가 아닌 문자를 입력했을 경우는 try- catch문으로 InputMismatchException 예외처리를 함.
! [rejected] main -> main (non-fast-forward)
git reflog
라는 명령어가 있음. git log와 비슷하지만 좀 더 상세하게 브런치 변경 등 git 작업 변경 내역을 보여주는 명령어임.
git reflog 로 파일이 사라지기 직전이 어느 위치인지 확인 후 ,
git checkout 헤드주소(ex)HEAD@{2})
명령어를 입력하니 그 커밋 시점으로 돌아가서 파일이 다시 원상복구됨. head@{숫자}가 0에 가까워질수록 좀 더 과거 이력으로 돌아감.
(+나중에 main과 병합하려 했지만, 시간낭비가 심할 것 같아, 새 레포지토리를 생성 후 새 폴더에 복붙해 main 에 push함. 하지만 이곳에도 두 저장공간이 commit 이력이 다르다는 이유로 충돌이 발생했고,
git pull origin main --allow-unrelated-histories
명령어로 병합해 push해서 해결.
새 레포지토리에도 commit이력이 생길수가 있을까?; read me파일생성 체크박스를 클릭한 게 일을 더 복잡하게 만든지도 모르겠다.)