본문 바로가기
내일배움캠프/내일배움캠프

[내일배움캠프] 2024. 09. 20. 트러블슈팅 TIL

by TIP__ 2024. 9. 20.

안녕하세요.

오늘은 과제를 진행하며 생긴 트러블슈팅 TIL을 작성해보려 합니다.

트러블 슈팅?

트러블 슈팅은 문제가 발생했을 때 원인을 찾아 해결하는 작업을 의미합니다.

이 작업을 함으로써 무제가 생겼을 때 대처할 수 있는 능력을 키울 수 있고 이 과정을 기록하여 TIL로 남김으로써 이 과정을 다시 한 번 되새기며 비슷한 문제가 생길 경우 빠르게 대처할 수 있습니다.

개요

개인 과제로 숫자로 하는 야구게임을 만들게 되었습니다.

랜덤으로 주어진 숫자가 존재하고 숫자를 입력하여 어느 숫자가 존재하며 어느 위치에 있는지를 맞추는 게임입니다.

 

이 과정에서 발생한 문제와 해결한 방법에 대해 적어보겠습니다.

트러블 슈팅

배경

초기 세팅으로는 게임의 난이도가 3으로 고정이었습니다.

하지만 추가 지문으로 게임의 난이도를 3 ~ 5 사이로 사용자가 직접 선택이 가능하도록 변경하게 되었습니다.

 

발단

난이도를 조절하기 위해 사용자가 입력하는 부분에서 입력값이 숫자가 아닌 경우 예외처리가 필요했습니다.

 

전개

먼저 게임의 난이도인 3 ~ 5 사이의 숫자를 입력했는지를 확인하고 이 외에는 잘못된 입력으로 처리하고자 했습니다.

 

위기

하지만 애초에 숫자가 아닌 문자가 입력된 경우에는 조건문 자체도 오류가 발생했습니다.

 

절정

때문에 3 ~ 5 사이의 숫자를 입력했는지 확인하기 전에 먼저 문자인지 숫자인지 확인하는 작업이 필요했습니다.

 

try { } catch () { }

try와 catch는 예외처리를 위해 사용됩니다.

try {
	// 예외가 발생할 수 있는 코드
} catch () {
	// 예외 발생 시 실행
}

 

try { }

 -. 예외가 발생할 수 있는 코드를 포함합니다.

 -. 이 블록 내부에서 예외가 발생할 경우 catch 블록으로 넘어갑니다.

catch ( ) { }

 -. try 블록에서 발생한 예외를 처리합니다.

 -. 특정 타입의 예외를 처리하기 위해 catch 블록에 해당 예외 타입을 명시해야 합니다.

 -. 여러 개의 catch 블록을 사용하여 서로 다른 예외를 처리할 수 있습니다.

 

이를 통하여 입력값이 숫자가 아닌 경우 예외처리를 할 수 있게 되었습니다.

try {
    difficultNumber = scanner.nextInt();
    scanner.nextLine();
} catch (InputMismatchException e) {
    msg.errInputMessage();
    scanner.nextLine();
    continue;
}

 

결말

사실 이 과정을 겪기 전까지는 try ~ catch에 대해서 확실하게 이해하지는 못했습니다.

하지만 이렇게 직접 오류를 겪고 오류를 해결하기 위해 직접 사용해보니 한결 이해하기 쉬워졌습니다.

마무리

트러블 슈팅 요약

1. 고정 난이도에서 사용자가 난이도를 조절할 수 있게 변경하였습니다.

2. 난이도를 사용자가 입력하기 때문에 잘못된 입력인 경우 예외처리가 필요했습니다.

3. 기존에 사용하던 if 조건문으로 예외처리를 하고자 하였으나 문자가 입력된 경우 오류가 발생하였습니다.

4. try ~ catch 를 사용하여 문자가 입력된 경우의 예외처리를 성공하였습니다.

저처럼 처음 개발을 접하시는 분들도 이 글을 보시고 조금이나마 도움이 되길 바라겠습니다.

댓글