C++ 异常


C++ 异常

执行C++代码时,可能会出现不同的错误:程序员编写的代码错误、由于错误输入而导致的错误或其他不可预见的事情。

当发生错误时,C++ 通常会停止并生成错误消息。技术术语是:C++ 将抛出一个例外(抛出错误)。


C++ 尝试并捕获

C++ 中的异常处理由三个关键字组成:try,throwcatch:

这个try语句允许您定义要在执行时测试错误的代码块。

这个throw当检测到问题时,关键字会引发异常,这让我们可以创建自定义错误。

这个catch语句允许您定义在 try 块中发生错误时要执行的代码块。

这个trycatch关键字成对出现:

示例

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

如果没有发生错误(例如,如果age20代替15,这意味着它将大于 18),catch块被跳过:

示例

int age = 20;
亲自试一试 »

您还可以使用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";
}
亲自试一试 »