执行C++代码时,可能会出现不同的错误:程序员编写的代码错误、由于错误输入而导致的错误或其他不可预见的事情。
当发生错误时,C++ 通常会停止并生成错误消息。技术术语是:C++ 将抛出一个例外(抛出错误)。
C++ 中的异常处理由三个关键字组成:try
,throw
和catch
:
这个try
语句允许您定义要在执行时测试错误的代码块。
这个throw
当检测到问题时,关键字会引发异常,这让我们可以创建自定义错误。
这个catch
语句允许您定义在 try 块中发生错误时要执行的代码块。
这个try
和catch
关键字成对出现:
try {
// Block of code to try
throw
exception; // Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
考虑以下示例:
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Age is: " << myNum;
}
亲自试一试 »
我们使用try
块来测试一些代码:如果age
变量小于18
, 我们将throw
一个例外,并在我们的中处理它catch
堵塞。
在里面catch
块,我们捕获错误并采取措施。这catch
声明需要一个范围:在我们的示例中,我们使用int
多变的 (myNum
)(因为我们抛出了一个异常int
输入try
堵塞 (age
)), 输出值age
。
如果没有发生错误(例如,如果age
是20
代替15
,这意味着它将大于 18),catch
块被跳过:
您还可以使用throw
关键字输出参考号,例如用于组织目的的自定义错误号/代码:
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
亲自试一试 »
如果您不知道throw
类型用在try
块,您可以使用 "three dots" 语法 (...
) 在 - 的里面catch
块,它将处理任何类型的异常:
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years old.\n";
}
亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!