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块识别异常特征并捕捉异常。
栈解退