Menu
Coddy logo textTech

'throw' 키워드

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 50번째.

때로는 다른 함수가 발생시킨 예외를 단순히 포착하는 대신, 자신의 코드에서 오류가 발생했음을 알릴 필요가 있습니다. throw 키워드를 사용하면 프로그램이 문제를 감지했을 때 예외를 수동으로 발생시킬 수 있습니다.

예외로 정수, 문자열 또는 사용자 지정 객체와 같은 다양한 유형의 값을 throw할 수 있습니다. 기본 구문은 다음과 같습니다.

if (someErrorCondition) {
    throw "Error message";  // 문자열 리터럴을 던집니다
}

throw를 사용하면 프로그램은 현재 함수의 실행을 즉시 중지하고, throw된 값을 처리할 수 있는 catch 블록을 찾습니다. 이는 특히 input을 validation하거나 정상적인 프로그램 실행 중에는 발생해서는 안 되는 조건을 확인할 때 유용합니다.

다음은 잘못된 input을 감지했을 때 예외를 발생시키는 실용적인 예입니다:

void checkAge(int age) {
    if (age < 0) {
        throw "Age cannot be negative!";
    }
    std::cout << "Age is valid: " << age << std::endl;
}

throw 키워드를 사용하면 프로그램에서 오류가 보고되는 시점과 방식을 제어할 수 있어, 잘못된 조건을 처리할 때 함수가 더 견고하고 예측 가능해집니다.

challenge icon

챌린지

쉬움

throw 키워드를 사용하여 잘못된 조건이 감지될 때 예외를 수동으로 발생시키는 input validation을 구현하는 프로그램을 작성하세요. 이 challenge에서는 자신만의 function에서 오류를 알리기 위해 throw를 사용하는 방법에 대한 이해도를 테스트합니다.

다음 input이 제공됩니다:

  • 사용자가 선택한 사용자 이름을 나타내는 username string(이 줄은 비어 있을 수 있음)
  • 사용자의 나이를 나타내는 정수 age

프로그램은 다음을 수행해야 합니다:

  1. 문자열과 정수를 매개변수로 받는 validateUser라는 이름의 function을 Create하세요
  2. function 내부에서 username이 비어 있는지(length가 0인지) 확인하세요
  3. username이 비어 있으면 "Username cannot be empty" stringthrow하세요
  4. age가 13보다 작은지 확인하세요
  5. age가 13보다 작으면 "Age must be at least 13" stringthrow하세요
  6. 두 validation이 모두 통과하면 "User validation successful"을 출력하세요
  7. main function에서 input 값을 사용하여 validateUser를 호출하세요
  8. try 블록을 사용하여 function을 호출하고, catch 블록을 사용하여 발생한 모든 string exceptions을 handle하세요

다음의 정확한 출력 형식을 사용하세요:

성공적인 validation의 경우:

User validation successful

validation 오류의 경우:

Validation error: [error_message]

throw를 사용하면 프로그램이 현재 function의 실행을 즉시 중지하고 일치하는 catch 블록을 찾는다는 점을 기억하세요. catch 블록은 발생한 string literal을 handle할 수 있도록 const char* type을 지정해야 합니다. 첫 번째 validation이 실패하면 function은 exception을 throw하고 두 번째 조건을 계속 확인하지 않습니다.

직접 해보기

#include <iostream>
#include <string>
using namespace std;

int main() {
    // 입력 읽기
    string username;
    int age;
    getline(cin, username);
    cin >> age;
    
    // TODO: 여기에 코드를 작성하세요
    // validateUser 함수를 만들고 유효성 검사 로직을 구현하세요
    // 예외 처리를 위해 try-catch 블록을 사용하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직과 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C++ 컴파일러