C++异常处理

本文介绍了三种处理异常情况的方法:调用`abort()`或`exit()`函数,返回错误码,以及使用C++的异常处理机制。通过`try-catch`块,程序可以捕获并处理异常,例如在计算调用`hmean()`函数时遇到无效参数。示例代码展示了如何在输入错误时抛出异常并重新获取用户输入。
摘要由CSDN通过智能技术生成

1.对于异常情况,处理方式之一是调用 abort() 函数,其函数原型位于<cstdlib>头文件中,其经典实现是向标准错误流发送一贯的消息,其是否刷新文件缓冲区取决于实现。也可使用exit()清除文件缓冲区,但不显示消息。

2.返回错误码

通过返回特殊值或bool值指明错误.

3.使用异常机制

  • 引发异常
  • 使用处理程序捕获异常
  • 使用try块

程序使用异常处理程序(exception handler)来捕获异常,异常处理程序位于要处理问题的程序中。catch关键字表示捕获异常。处理程序以关键字catch开头,随后是位于括号中的类型声明,它指出了异常处理程序要响应的异常类型;然后是一个用花括号括起的代码块,指出要采取的措施。catch关键字和异常类型作标签,指出当异常被引发时,程序应跳到这个位置执行。异常处理程序也被称为catch块。
try块标识其中特定的异常可能被激活的代码块,它后面跟一个或多个catch块。try块是由关键字体示的,关键字try的后面是一个由花括号括起的代码块,表明需要注意这些代码引发的异常。


#include<iostream>
double hmean(double a, double b);
int main()
{
double x,y,z;
std::cout<<"Enter two numbers:";
while (std::cin >>x>> y)
{

try{//start of try block
z = hmean(x,y);
}//end of try block

catch(const char*s)//start of exception handler 
{
std::cout << s<< std::endl;
std::cout<<"Enter a new pair of numbers:";
continue;
}//end of handler

std::cout<<"Harmonic mean of"<<x<<"and"<<y
<< " is " << z << std::endl;
std::cout<<"Enter next set of numbers<q to quit>:";
}
std::Cout << "Bye!\n";
return 0;
}
double hmean(double a, double b)
{
if (a == -b)
throw"bad hmean() arguments:a=-b not allowed";
return 2.0 * a * b/ (a+ b);
}

其中try块用于检测代码块,若发现异常则通过throw引发异常并标识异常(throw后面的值即为异常特征),指出异常语句。然后通过catch块识别异常特征并捕捉异常。

栈解退

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值