#include <iostream>
#include <stdexcept> // 包含标准异常类
using namespace std;
void checkAge(int age) {
if (age < 18) {
throw invalid_argument("年龄必须大于或等于18岁。");
}
else {
cout << "年龄符合要求。" << endl;
}
}
int main() {
int age;
cout << "请输入你的年龄: ";
cin >> age;
try {
checkAge(age);
}
catch (const invalid_argument& e) {
cout << "捕获到异常: " << e.what() << endl;
}
cout << "程序继续运行..." << endl;
system("pause");
return 0;
}
`throw` 是 C++ 中用于异常处理的一个关键字。当程序中出现异常(即遇到错误或其他特殊情况)时,可以使用 `throw` 关键字抛出一个异常对象,以通知调用者或者更上层的程序处理该异常。
异常处理通常与 `try`、`catch` 和 `throw` 关键字一起使用。以下是它们的基本用法和一个简单的示例:
基本用法
1. throw:用于抛出异常。
2. try:用于包围可能引发异常的代码块。
3. catch:用于捕获并处理异常。
代码说明
1. 抛出异常:在 `checkAge` 函数中,如果年龄小于18岁,使用 `throw` 关键字抛出一个 `invalid_argument` 类型的异常,并传递异常信息 `"年龄必须大于或等于18岁。"`.
throw invalid_argument("年龄必须大于或等于18岁。");
2. 捕获异常:在 `main` 函数中,使用 `try` 块包围调用 `checkAge` 的代码。然后使用 `catch` 块捕获 `invalid_argument` 类型的异常,并处理该异常(在此例中,输出异常信息)。
try
{
checkAge(age);
}
catch (const invalid_argument& e)
{
cout << "捕获到异常: " << e.what() << endl;
}
3. 程序继续运行:无论是否发生异常,程序都会继续运行 `try-catch` 块后的代码。
异常处理的优势
- 提高代码的健壮性:通过捕获和处理异常,可以防止程序因异常情况崩溃。
- 分离正常逻辑和异常处理:将正常的业务逻辑和异常处理代码分开,使代码更加清晰、易读。
- 传递错误信息:通过异常对象,可以传递详细的错误信息,便于调试和维护。
使用 `throw`、`try` 和 `catch` 进行异常处理,有助于编写更加健壮和易维护的代码。