Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ if...Else C++ switch C++ while 循环 C++ for 循环 C++ break/continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 作用域 C++ 递归

C++ 类

C++ 面向对象编程 C++ 类和对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 堆栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何

C++ 加两个数字 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 示例

C++ 示例 C++ 现实生活中的例子 C++ 编译器 C++ 练习 C++ 测验 C++ 证书


C++ 异常


C++ 异常

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

当发生错误时,C++ 通常会停止并生成一条错误消息。该错误的专业术语是:C++ 将会 **抛出异常** (抛出错误)。


C++ try 和 catch

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

try 语句允许您定义一段代码块,用于在执行时测试错误。

throw 关键字在检测到问题时抛出异常,这使我们能够创建自定义错误。

catch 语句允许您定义一段代码块,用于在 try 块中发生错误时执行。

trycatch 关键字成对出现

示例

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 的值。

如果未发生错误(例如,如果 age20 而不是 15,这意味着它将大于 18),则 catch 块将被跳过

示例

int age = 20;
亲自尝试 »

您还可以使用 throw 关键字输出一个参考编号,例如自定义错误编号/代码,以用于组织目的(在我们的示例中为 505

示例

try {
  int age = 15;
  if (age >= 18) {
    cout << "访问已授予 - 您已年满 18 岁。";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "访问被拒绝 - 您必须年满 18 岁。\n";
  cout << "错误编号: " << myNum;
}
亲自尝试 »

处理任何类型的异常 (...)

如果您不知道 throwtry 块中使用的 **类型**,您可以在 catch 块中使用“三个点”语法 (...),它将处理任何类型的异常

示例

try {
  int age = 15;
  if (age >= 18) {
    cout << "访问已授予 - 您已年满 18 岁。";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "访问被拒绝 - 您必须年满 18 岁。\n";
}
亲自尝试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.