异常处理

收藏670

阅读939

更新时间2025-08-05

C++ 异常

在执行 C++ 代码时,可能会发生各种错误:程序员编写的代码错误,由于错误输入导致的错误,或者其他不可预见的事情。

当发生错误时,C++ 通常会停止并生成一条错误信息。这在技术上的术语是:C++ 将抛出异常(throw an error)。

C++ try 和 catch

C++ 中的异常处理包含三个关键字:trythrowcatch

try 语句允许您定义一段代码,该代码在执行时会测试是否有错误。

当检测到问题时,throw 关键字会抛出异常,这允许我们创建自定义错误。

catch 语句允许您定义一段代码,如果 try 块中发生错误,该代码将会被执行。

trycatch 关键字是成对出现的:

实例

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";  
}
运行实例 »

点击 "运行实例" 按钮查看在线实例

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号