TIL(Today I Learned)

계산기 프로젝트 코드 수정 및 예외 처리

Happy._. 2024. 4. 30. 21:52

단순하게 시작했던 계산기 프로젝트에 문제점들이 생기면서 코드를 수정하고 예외가 발생하는 부분들을 찾아 예외 처리를 하면서 생각보다 시간을 많이 쓰게 되었다.

 

다음은 변경된 사항이다.

  • 모든 것은 객체라고 생각해서 만들었던 단순 안내 문구들을 담았던 클래스를 삭제
  • 계산할 값들을 저장하는 클래스에서 입력값에 대한 검증을 하는 부분을 제거
  • 검증만을 담당하는 클래스를 생성
  • 검증 후 바로 계산을 시작하면 저장을 할 필요가 없으므로 저장을 담당하는 클래스 삭제
  • 모든 값을 받아서 계산하는 방식에서 두 개의 값만 받아서 계산하는 방식으로 변경
  • 계산 방식 변경으로 인한 main 함수에 반복문(while) 추가 - 모든 값의 계산이 끝날 때까지 반
  • 예외 처리 추가
    • 0으로 나누는 경우 - 이 부분은 식을 검증하는 과정에서 처리할 수 없었고 나누는 과정에 처리
    • +3 같이 피연산자가 하나인 경우 - 연산 기호를 저장하는 리스트와 숫자를 저장하는 리스트의 사이즈 비교로 처리
    • 입력값이 공백인 경우
    • 문자열로만 이루어진 값인 경우

코드를 개선하면서 어려웠던 점은 예측하지 못한 예외들이 발생했을 때이다.

보통 NumberFormatException가 많이 발생하지만 그 외의 예외에 대해서는 어떤 예외로 처리해야 하는지 결정하는 부분이 어려웠다.

현재 입력받는 값에서 문자열을 걸러낼 때 Exception 예외를 던지고 있는데 이 부분도 특정 예외가 있는지 찾아보고 걔선해야 될 것 같다.

 

결론 : 같은 예외가 발생할 때를 대비해서 예외 케이스들을 정리해두자!