본문으로 건너뛰기
Java 기초집LESSON 17

예외 처리: try-catch, throws, 사용자 입력 오류 대응

난이도입문 → 초급
예상 시간35분
선수지식이전 강의

17강. 예외 처리: try-catch, throws, 사용자 입력 오류 대응

1. 이번 강의에서 해결할 문제​

사용자가 문자를 점수로 입력하거나 빈 이름을 입력하면 프로그램이 종료될 수 있습니다. 예상 가능한 입력 오류만 가까운 곳에서 처리해야 합니다.

2. 학습 목표​

3. 핵심 개념​

예외는 정상 흐름과 오류 흐름을 분리합니다. NumberFormatException과 IllegalArgumentException은 RuntimeException 계열이며 호출자가 복구할 수 있는 입력 경계에서 잡습니다. 모든 Exception을 넓게 잡으면 프로그래밍 오류까지 숨길 수 있습니다. throws는 예외 처리 책임이 호출자에게 있음을 선언합니다.

4. 단계별 실습​

1. src/SafeInput.java 작성​

실행 환경: 코드 편집기

실행 위치: C:\dev\game-records

실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.

대상 파일: src/SafeInput.java

src/SafeInput.java
public class SafeInput {
static int parseNonNegativeScore(String text) {
int score = Integer.parseInt(text.trim());
if (score < 0) throw new IllegalArgumentException("점수는 0 이상이어야 합니다.");
return score;
}

public static void main(String[] args) {
String input = args.length > 0 ? args[0] : "not-a-number";
try {
int score = parseNonNegativeScore(input);
System.out.println("저장할 점수: " + score);
} catch (NumberFormatException e) {
System.out.println("정수를 입력하세요: " + input);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}

2. PowerShell에서 컴파일·실행​

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-records

실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.

대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일

Windows PowerShell
Set-Location C:\dev\game-records
javac -d out .\src\SafeInput.java
java -cp out SafeInput 1200
java -cp out SafeInput wrong
java -cp out SafeInput -5

예상 결과: 정상 점수는 저장 후보로 출력되고 문자와 음수는 각각 명확한 안내로 처리됩니다.

5. 코드가 동작하는 이유​

parseInt가 형식 오류를 NumberFormatException으로 알리고 도메인 규칙은 별도 IllegalArgumentException으로 표현합니다. catch를 구분해 사용자에게 다른 해결 방법을 안내합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

예외 처리: try-catch, throws, 사용자 입력 오류 대응 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“예외 처리: try-catch, throws, 사용자 입력 오류 대응”에서 오류나 데이터 손실을 줄이는 선택은 무엇인가요?
  2. 문제 2“예외 처리: try-catch, throws, 사용자 입력 오류 대응” 실습 중 ‘예외 메시지 없이 재입력시키기’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

17강. 예외 처리: try-catch, throws, 사용자 입력 오류 대응 미완료 상태