在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` 输出异常的消息。
这种方式使得程序能够优雅地处理无效参数的情况,而不是在出现问题时突然崩溃。