// except.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "string.h"
class CDivZeroException //定义一个除零的异常类
{
public:
char ExceptionMsg[128]; //定义数据成员
CDivZeroException() //定义构造函数
{
strcpy(ExceptionMsg,"除零错误"); //设置异常信息
}
CDivZeroException(CDivZeroException& other)//定义拷贝构造函数
{
strcpy(ExceptionMsg,"除零错误"); //设置异常信息
printf("CDivZeroException(CDivZeroException& other)\n");
}
};
class CNegException //定义一个负数异常类
{
public:
char ExceptionMsg[128]; //定义数据成员
CNegException() //定义构造函数
{
strcpy(ExceptionMsg,"除数为负数错误"); //设置异常信息
}
CNegException(CNegException& other) //定义拷贝构造函数
{
strcpy(ExceptionMsg,"除数为负数错误"); //设置异常信息
printf("CNegException(CNegException& other)\n");
}
};
bool Div(int x ,int y,int &ret) //定义除法函数
{
try //异常捕捉
{
if (y == 0) //判断除数是否为0
throw CDivZeroException(); //抛出异常
else if ( y < 0) //判断除数是否为负数
throw CNegException(); //抛出异常
else
ret = x / y; //进行除法运算
}
catch(CDivZeroException e) //捕捉除零的异常
{
printf("%s\n",e.ExceptionMsg); //输出异常信息
return false;
}
catch(CNegException e) //捕捉除数为负数的异常
{
printf("%s\n",e.ExceptionMsg); //输出异常信息
return false;
}
return true;
}
int main(int argc, char* argv[])
{
int ret; //定义一个变量
Div(20,-5,ret); //调用Div函数
return 0;
}
/*
CNegException(CNegException& other)
CNegException(CNegException& other)
除数为负数错误
Press any key to continue
*/