c++ std::invalid_argument应用


在C++中,`std::invalid_argument` 是一个异常类,用于报告传递给函数的参数无效的情况。这个异常定义在 `` 头文件中。下面是一个简单的例子,展示了如何在C++中使用 `std::invalid_argument`。


#include <iostream>
#include <stdexcept> // 包含 std::invalid_argument

// 假设我们有一个函数,它接受一个整数参数,并检查它是否大于0
void checkPositive(int num) {
    if (num <= 0) {
        // 如果参数小于或等于0,则抛出 std::invalid_argument 异常
        throw std::invalid_argument("Number must be positive");
    }
    // 如果一切正常,则执行一些操作(这里只是打印一个消息)
    std::cout << "Number is positive: " << num << std::endl;
}

int main() {
    try {
        // 尝试调用函数,传入一个正数
        checkPositive(5);

        // 尝试调用函数,传入一个负数,这将导致抛出异常
        checkPositive(-1);
    } catch (const std::invalid_argument& e) {
        // 捕获异常并处理
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

在这个例子中,`checkPositive` 函数检查传入的整数是否大于0。如果不是,则通过 `throw` 关键字抛出一个 `std::invalid_argument` 异常,并附带一个描述性消息。在 `main` 函数中,我们尝试调用 `checkPositive` 函数两次,一次传入一个正数(这将正常执行),另一次传入一个负数(这将导致抛出异常)。我们使用 `try-catch` 块来捕获并处理这个异常,通过 `std::cerr` 输出异常的消息。

这种方式使得程序能够优雅地处理无效参数的情况,而不是在出现问题时突然崩溃。