throw sends a value to a handler when a function cannot continue normally.

Throw Values

throw_values.cpp
#include <iostream>
#include <string>

std::string describeLevel(int level) {
    if (level < 1) {
        throw std::string("level too low");
    }
    return "level=" + std::to_string(level);
}

int main() {
    int level = ;

    try {
        std::string message = describeLevel(level);
        std::cout << message << std::endl;
    } catch (const std::string& message) {
        std::cout << "caught=" << message << std::endl;
    }

    std::cout << "checked=1" << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describeLevel(int level) {
    if (level < 1) {
        throw std::string("level too low");
    }
    return "level=" + std::to_string(level);
}

int main() {
    int level = ;

    try {
        std::string message = describeLevel(level);
        std::cout << message << std::endl;
    } catch (const std::string& message) {
        std::cout << "caught=" << message << std::endl;
    }

    std::cout << "checked=1" << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describeLevel(int level) {
    if (level < 1) {
        throw std::string("level too low");
    }
    return "level=" + std::to_string(level);
}

int main() {
    int level = ;

    try {
        std::string message = describeLevel(level);
        std::cout << message << std::endl;
    } catch (const std::string& message) {
        std::cout << "caught=" << message << std::endl;
    }

    std::cout << "checked=1" << std::endl;
    return 0;
}
throw A thrown value leaves the current function and looks for a matching `catch` block.