C++异常是对程序运行过程中发生的异常情况(例如被0除)的一种相应。异常提供了将控制权从程序的一个部分转移到另一个部分的途径。对异常的处理有3个组成部分:
1、引发异常
2、使用异常处理程序捕捉异常
3、在有可能发生异常的代码块使用try块
catch关键字表示捕获异常。处理程序以关键字catch开头,随后是位于括号中的类型声明,他指出了异常处理程序要相应的异常类型。catch关键字和异常类型用作标签,指出当异常被引发时,程序应该跳到这个位置执行。异常处理程序也被称为catch块。
try块用于可能引发异常的的代码块,它后面跟一个或者多个catch块。
示例代码如下:
// exception_1.cpp : 定义控制台应用程序的入口点。
//using an exception
#include "stdafx.h"
#include "iostream"
double hmean(double, double);
int _tmain(int argc, _TCHAR* argv[])
{
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 nembers: ";
continue;
}
std::cout << "Harmonic mean of " << x << "and "<<y << " is " << z << std::endl;
std::cout << "Enter next set of nembers <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";
else
return 2.0 * a * b / (a + b);
}
运行效果如图