C++ 异常
C++ 异常
在执行 C++ 代码时,可能会发生各种错误:程序员编写的代码错误,由于错误输入导致的错误,或者其他不可预见的事情。
当发生错误时,C++ 通常会停止并生成一条错误信息。这在技术上的术语是:C++ 将抛出异常(throw an error)。
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 << "访问被授予 - 您的年龄足够了。"; } else { throw (age); } } catch (int myNum) { cout << "访问被拒绝 - 您必须至少年满18岁。\n"; cout << "年龄是:" << myNum; }
例子解释
我们使用 try
块来测试一些代码:如果 age
变量小于 18,我们将抛出一个异常,并在我们的 catch
块中处理它。
在 catch
块中,我们捕获错误并对其进行处理。catch
语句接受一个参数:在我们的实例中,我们使用一个 int
变量(myNum
)(因为我们在 try
块中抛出了一个 int
类型的异常(age
)),来输出 age
的值。
如果没有发生错误(例如,如果 age
是 20 而不是 15,这意味着它将大于 18),则会跳过 catch
块:
实例
int age = 20;
您还可以使用 throw
关键字输出参考号,例如用于组织目的的自定义错误号/代码:
实例
try { int age = 15; if (age >= 18) { cout << "访问被授予 - 您的年龄足够了。"; } else { throw 505; } } catch (int myNum) { cout << "访问被拒绝 - 您必须至少年满18岁。\n"; cout << "错误号码:" << myNum; }
处理任何类型的异常 (...)
如果您不知道 try
块中使用的 throw
类型,您可以在 catch
块内使用“三个点”语法 (...
),它将处理任何类型的异常:
实例
try { int age = 15; if (age >= 18) { cout << "访问被授予 - 您的年龄足够了。"; } else { throw 505; } } catch (...) { cout << "访问被拒绝 - 您必须至少年满18岁。\n"; }