C++ 异常
C++ 异常
在执行 C++ 代码时,可能会发生各种错误:程序员编写的代码错误、错误的输入导致的错误,或其他不可预见的事情。
当发生错误时,C++ 通常会停止并生成一条错误消息。该错误的专业术语是:C++ 将会 **抛出异常** (抛出错误)。
C++ try 和 catch
C++ 中的异常处理包含三个关键字:try
、throw
和 catch
try
语句允许您定义一段代码块,用于在执行时测试错误。
throw
关键字在检测到问题时抛出异常,这使我们能够创建自定义错误。
catch
语句允许您定义一段代码块,用于在 try 块中发生错误时执行。
try
和 catch
关键字成对出现
示例
try {
// 要尝试的代码块
throw exception; // 当出现问题时抛出异常
}
catch () {
// 用于处理错误的代码块
}
考虑以下示例
示例
try {
int age = 15;
if (age >= 18) {
cout << "访问已授予 - 您已年满 18 岁。";
} else {
throw (age);
}
}
catch (int myNum) {
cout << "访问被拒绝 - 您必须年满 18 岁。\n";
cout << "年龄是: " << myNum;
}
亲自尝试 »
示例解释
我们使用 try
块来测试一些代码:如果 age
变量小于 18
,我们将 throw
一个异常,并在我们的 catch
块中处理它。
在 catch
块中,我们捕获错误并对其进行处理。 catch
语句接受一个 **参数**:在我们的示例中,我们使用了一个 int
变量 (myNum
)(因为我们在 try
块中抛出了一个 int
类型的异常 (age
)),以便输出 age
的值。
如果未发生错误(例如,如果 age
为 20
而不是 15
,这意味着它将大于 18),则 catch
块将被跳过
您还可以使用 throw
关键字输出一个参考编号,例如自定义错误编号/代码,以用于组织目的(在我们的示例中为 505
)
示例
try {
int age = 15;
if (age >= 18) {
cout << "访问已授予 - 您已年满 18 岁。";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "访问被拒绝 - 您必须年满 18 岁。\n";
cout << "错误编号: " << myNum;
}
亲自尝试 »
处理任何类型的异常 (...)
如果您不知道 throw
在 try
块中使用的 **类型**,您可以在 catch
块中使用“三个点”语法 (...
),它将处理任何类型的异常
示例
try {
int age = 15;
if (age >= 18) {
cout << "访问已授予 - 您已年满 18 岁。";
} else {
throw 505;
}
}
catch (...) {
cout << "访问被拒绝 - 您必须年满 18 岁。\n";
}
亲自尝试 »