C++ 异常处理
C++ 异常处理
在执行 C++ 代码时,可能会发生不同的错误:程序员编写的编码错误、错误输入引起的错误或其他不可预见的事情。
当发生错误时,C++ 通常会停止并生成错误消息。这个术语的技术术语是:C++ 抛出exception异常(抛出错误)。
C++ try 和 catch 语句
C++中的异常处理包括三个关键字: try
, throw
and catch
:
try
语句允许您定义要在执行时测试错误的代码块。
throw
关键字在检测到问题时抛出异常,这使我们可以创建自定义错误。
catch
语句允许您在try块中发生错误时定义要执行的代码块。
try
和 catch
关键字成对出现:
实例
try {
// 要尝试的代码块
throw exception;
// 出现问题时抛出异常
}
catch () {
// 处理错误的代码块
}
参考下面的例子:
实例
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
)(因为我们在try
块(age
)中抛出int
类型的异常)来输出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;
}
运行实例 »
处理任何类型的异常 (...)
如果不知道try
块中使用的throw
类型,
可以在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";
}
运行实例 »