2024 - 09 - 09 (트러블 슈팅)

e_zy·2024년 9월 9일
post-thumbnail

배경: 2주차 과제로 주어진 클래스 없이 계산기를 만드는 작업을 진행하던 중, 기본적인 사칙연산을 구현하는 단계에서 문제를 발견했다. 평소 강의를 들을 때는 어느 정도 이해했다고 생각했지만, 실제 구현은 다르게 느껴졌다.

발단: 첫 번째 문제는 계산 로직을 구현할 때 사칙연산자 입력과 관련된 오류였다. 처음에는 단순히 연산자를 받아서 계산하는 구조를 잡아갔지만, 계산 도중 잘못된 입력이 들어오면 프로그램이 멈추거나 오류가 발생하는 문제가 생길 수 있음을 알게 되었다.

전개: 처음에는 간단하게 잘못된 연산자를 입력할 경우 오류 메시지만 출력하는 방식으로 대응하려고 했다. 하지만 잘못된 입력이 들어왔을 때 프로그램이 종료되어야 할지, 다시 처음부터 입력을 받아야 할지 혼란스러웠다. 그 과정에서 또 다른 문제는 0으로 나누는 경우 발생했다. 잘못된 입력뿐만 아니라 수학적으로 허용되지 않는 연산에 대한 대응도 필요했다.

위기: 예외 처리를 추가하려고 시도했으나, 단순히 계산을 중단시키는 것이 아니라 프로그램 흐름을 깨뜨리지 않고 계속해서 입력을 받을 수 있게 해야 했다. 그러나 continue나 return 문을 넣는 방식은 지피티를 통해 비효율적이라는 것을 깨달았다. 또, 입력을 반복받는 방식과 잘못된 입력을 처리하는 방식이 맞물려서, 어디서부터 다시 시작해야 하는지 고민이 커졌다.

절정: 근본적인 문제 해결을 위해 입력 검증과 예외 처리 구조를 재설계하기로 했다. 각 입력 단계에서 예외가 발생할 경우 이를 적절하게 처리하고, 프로그램의 흐름을 유지하는 구조를 만들었다. 이를 위해 try-catch 구문을 도입하여 숫자 입력, 연산자 입력, 그리고 나누기 연산에서 0으로 나누는 경우를 각각 처리하는 방법을 추가했다. 이를 통해 프로그램이 갑작스럽게 종료되지 않고, 사용자가 다시 입력할 수 있게 유도했다.

결말: 이렇게 예외 처리와 잘못된 입력에 대한 대응을 강화한 구조로 프로그램을 개선했다. 이를 통해 프로그램의 안정성을 높였고, 앞으로 유지보수 시에도 예외 처리에 대한 체계적인 대응이 가능하도록 구조를 단순하고 명료하게 유지했다.

profile
코딩 왕초보

0개의 댓글