Swift 심화 - 숫자 야구

동그라미·2024년 11월 8일
3

배경

Level2의 "오류가 날 수 있는 예외처리 상황에 대해 고민해보기 + 구현하기"라는 문항을 보고, 예외처리와 오류를 어떻게 효과적으로 다룰 수 있을지 고민하며 야구 게임을 구현했습니다. 게임 내에서 발생할 수 있는 다양한 예외 상황을 처리하기 위해 여러 방안을 고려했으며, 이를 코드로 구현해보았습니다.


발단

게임에서 사용자가 입력하는 값이나 예상치 못한 상황에서 오류가 발생할 수 있습니다. 예를 들면:

  • 사용자가 잘못된 범위의 숫자를 입력할 경우
    : 특정 연산에서 예기치 않게 잘못된 상태가 발생할 경우 (예: 점수 계산, 게임 종료 조건 등)
  • 게임이 여러 번 반복되면서 상태가 꼬이는 경우
    : 이런 예외 상황들을 미리 처리하지 않으면 게임의 흐름이 중단되거나 예상치 못한 오류가 발생할 수 있습니다.

전개

게임을 구현하면서 몇 가지 문제에 직면했습니다:

사용자의 잘못된 입력 처리: 사용자가 숫자가 아닌 값을 입력하거나, 범위를 벗어난 값을 입력할 경우 이를 처리해야 했습니다.
게임 종료 조건 처리: 게임이 끝난 후 계속해서 입력을 받는 오류가 발생할 수 있었습니다.
불필요한 상태 변경: 게임이 진행되는 도중, 사용자가 잘못된 입력을 했을 때 상태가 변경되지 않도록 해야 했습니다.
이를 해결하기 위해서는 예외를 처리하는 조건문을 추가하고, 사용자가 입력하는 값에 대해 더 철저히 검증해야 했습니다. 또한, 게임의 상태를 관리하는 방법을 개선하여 불필요한 상태 변경을 방지해야 했습니다.


위기

게임 진행 중에 예외 처리 코드가 너무 많아져 코드의 가독성이 떨어졌다.
게임 종료 조건을 정확하게 처리하지 못해, 게임이 끝난 후에도 계속 입력을 받는 문제가 발생
Int 타입의 입력값에 대한 예외 처리가 미흡하여 프로그램이 크래시가 날 위험이 있다.


절정

게임의 흐름을 관리하기 위해 게임 상태를 명확히 구분하였고, 예외 처리를 간결하게 처리할 수 있는 방법을 도입했습니다. try-catch 구문을 활용하여 예외를 처리하고, 사용자가 잘못된 입력을 했을 때 즉시 오류 메시지를 출력하고 게임을 종료하거나 입력을 다시 받도록 했습니다.

또한, 게임 종료 후에는 더 이상 입력을 받지 않도록 상태를 관리했습니다. 이를 통해 코드의 가독성을 크게 개선하고, 예외 상황에서 게임이 끊김 없이 정상적으로 동작하도록 만들었습니다.


결말

아래와 같이 게임을 구현할 수 있었고, 예외처리와 입력 검증을 철저히 하여 게임이 더 안정적이고 예측 가능하게 되었습니다. 예외가 발생할 경우, 적절한 오류 메시지를 출력하고 게임이 정상적으로 종료되도록 처리했습니다.

profile
맨날 최선을 다하지는 마러라. 피곤해서 못산다.

0개의 댓글