
배경: 2주차 과제로 주어진 클래스 없이 계산기를 만드는 작업을 진행하던 중, 기본적인 사칙연산을 구현하는 단계에서 문제를 발견했다. 평소 강의를 들을 때는 어느 정도 이해했다고 생각했지만, 실제 구현은 다르게 느껴졌다.
발단: 첫 번째 문제는 계산 로직을 구현할 때 사칙연산자 입력과 관련된 오류였다. 처음에는 단순히 연산자를 받아서 계산하는 구조를 잡아갔지만, 계산 도중 잘못된 입력이 들어오면 프로그램이 멈추거나 오류가 발생하는 문제가 생길 수 있음을 알게 되었다.
전개: 처음에는 간단하게 잘못된 연산자를 입력할 경우 오류 메시지만 출력하는 방식으로 대응하려고 했다. 하지만 잘못된 입력이 들어왔을 때 프로그램이 종료되어야 할지, 다시 처음부터 입력을 받아야 할지 혼란스러웠다. 그 과정에서 또 다른 문제는 0으로 나누는 경우 발생했다. 잘못된 입력뿐만 아니라 수학적으로 허용되지 않는 연산에 대한 대응도 필요했다.
위기: 예외 처리를 추가하려고 시도했으나, 단순히 계산을 중단시키는 것이 아니라 프로그램 흐름을 깨뜨리지 않고 계속해서 입력을 받을 수 있게 해야 했다. 그러나 continue나 return 문을 넣는 방식은 지피티를 통해 비효율적이라는 것을 깨달았다. 또, 입력을 반복받는 방식과 잘못된 입력을 처리하는 방식이 맞물려서, 어디서부터 다시 시작해야 하는지 고민이 커졌다.
절정: 근본적인 문제 해결을 위해 입력 검증과 예외 처리 구조를 재설계하기로 했다. 각 입력 단계에서 예외가 발생할 경우 이를 적절하게 처리하고, 프로그램의 흐름을 유지하는 구조를 만들었다. 이를 위해 try-catch 구문을 도입하여 숫자 입력, 연산자 입력, 그리고 나누기 연산에서 0으로 나누는 경우를 각각 처리하는 방법을 추가했다. 이를 통해 프로그램이 갑작스럽게 종료되지 않고, 사용자가 다시 입력할 수 있게 유도했다.
결말: 이렇게 예외 처리와 잘못된 입력에 대한 대응을 강화한 구조로 프로그램을 개선했다. 이를 통해 프로그램의 안정성을 높였고, 앞으로 유지보수 시에도 예외 처리에 대한 체계적인 대응이 가능하도록 구조를 단순하고 명료하게 유지했다.