[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-模板
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Timeless小帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值