[C++学习日记]-13-异常处理

异常和异常处理

程序执行过程中出现的问题称为异常。
在C ++中,异常是程序运行时产生的错误的反应,例如试图除以零。

抛出异常

C ++异常处理基于三个关键字:try,catch和throw。

当问题出现时throw是用来抛出异常的。

int fatherAge = 18;
int sonAge = 38;
if (sonAge > fatherAge) {
  throw "你爸真年轻~";
}

上述代码中,当sonAge比fatherAge大的时候就会抛出异常。

在throw语句中,参数确定异常的类型。 这可以是任何表达式。 表达式结果的类型将决定抛出异常的类型。

捕捉异常

try标识将激活用于检测异常的代码块。 接下来是一个或多个catch块。 catch关键字表示在引发特定异常时执行的代码块。

可以生成异常的代码被try / catch块包围。

您可以通过设置关键字catch后面的括号中显示的异常声明来捕获哪种类型的异常。

try {
  int fatherAge = 18;
  int sonAge = 38;
  if (sonAge > fatherAge) {
   throw 666;
  }
} 
catch (int x) {
  cout<<"你确定这是你爸?"<<x;
}

//输出 "你确定这是你爸? 666"

try块引发异常,然后catch块处理它。

错误代码666是一个整数,它出现在throw语句中,所以它会导致int类型的异常。

可能会列出多个catch语句来处理各种异常,以防try块引发多个异常。

处理异常

例如,一个程序要求用户输入两个数字,然后进行整除,为了确保被除数不为0,你就需要用异常处理。

int main() {
  int num1;
  cout <<"输入第一个数字:";
  cin >> num1;

  int num2;
  cout <<"输入第二个数字:";
  cin >> num2;

  cout <<"结果:"<<num1 / num2;
}

如果用户输入除0外的任何数字,程序将正常运行。

但是当用户在第二个数字的时候输入了0,则程序会崩溃

现在我们需要使用try / catch块来处理抛出的异常。

int main() {
 try {
  int num1;
  cout <<"输入第一个数字:";
  cin >> num1;

  int num2;
  cout <<"输入第二个数字:";
  cin >> num2;

  if(num2 == 0) {
   throw 0;
  } 

  cout <<"结果:"<<num1 / num2; 
 }
 catch(int x) {
  cout <<"请勿输入0!";
 }
}

上述代码将会避免出现当num2为0时导致程序崩溃的问题,同时会抛出异常。

捕获任意异常

在我们的例子中,我们只捕获整数类型的异常。 可以指定你的catch块处理在try块中抛出的任何类型的异常。可以通过在catch的括号之间添加一个省略号(…)实现。

try {
  // 要执行的代码
} catch(...) {
  // 用来处理异常的代码
}

小练习

请对2/0进行异常处理,防止程序崩溃

如果你有兴趣的话,欢迎把你的答案在评论区中发表


上一篇[C++学习日记]-12-模板

发布了20 篇原创文章 · 获赞 14 · 访问量 9031

猜你喜欢

转载自blog.csdn.net/qq_18604209/article/details/104024428