一个简单的防治除数为 0 的 异常处理类
// DivideByZeroException.h: interface for the DivideByZeroException class.
//
//
#if !defined(AFX_DIVIDEBYZEROEXCEPTION_H__113A7977_0A63_4B31_A4DC_07FBD3EFC752__INCLUDED_)
#define AFX_DIVIDEBYZEROEXCEPTION_H__113A7977_0A63_4B31_A4DC_07FBD3EFC752__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#include <stdexcept>
using namespace std;
#endif // _MSC_VER > 1000
class DivideByZeroException :public runtime_error
{
public:
DivideByZeroException();
virtual ~DivideByZeroException();
};
#endif // !defined(AFX_DIVIDEBYZEROEXCEPTION_H__113A7977_0A63_4B31_A4DC_07FBD3EFC752__INCLUDED_)
// DivideByZeroException.cpp: implementation of the DivideByZeroException class.
//
//
#include "stdafx.h"
#include "DivideByZeroException.h"
//
// Construction/Destruction
//
DivideByZeroException::DivideByZeroException():runtime_error("attemp to divide by zero")
{
}
DivideByZeroException::~DivideByZeroException()
{
}
// TestException.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include "DivideByZeroException.h"
using namespace std;
double Quotient(int nNumerator, int nDenominator)
{
if (0 == nDenominator)
{
throw DivideByZeroException();
}
else
{
return static_cast<double>(nNumerator)/nDenominator;
}
}
int main(int argc, char* argv[])
{
int nNumber1 = 0;
int nNumber2 = 0;
double dResult = 0.0;
cout<<"请输入两个整形数据 : ";
while (cin >> nNumber1 >> nNumber2)
{
try
{
dResult = Quotient(nNumber1,nNumber2);
cout<<"/n/n其结果为 :"<<dResult<<endl<<endl;
}
catch (DivideByZeroException & dividebyzeroexception)
{
cout<<"Exception occurred :"<<dividebyzeroexception.what()<<endl;
}
cout<<"请输入两个整形数据 : ";
}
return 0;
}