首页 > 试题广场 >

设计一个异常 Exception 抽象类,在此基础上派生一个

[问答题]

设计一个异常 Exception 抽象类,在此基础上派生一个 OutOfMemory 类响应内存不足, 一个 RangeError 类响应输入的数不在指定范围内,实现并测试这几个类。

推荐

解:

源程序:

#include <iostream.h>
class Exception
{
public:
Exception(){}
virtual ~Exception(){} virtual void PrintError() = 0;
};
class OutOfMemory : public Exception
{
public:
OutOfMemory(){}
~OutOfMemory(){}
virtual void PrintError();
};
void OutOfMemory::PrintError()
{
cout << "Out of Memory!!\n";
}
class RangeError : public Exception
{
public:
RangeError(unsigned long number){BadNum = number;}
~RangeError(){}
virtual void PrintError();
virtual unsigned long GetNumber() { return BadNum; }
virtual void SetNumber(unsigned long number) {BadNum = number;}
private:
unsigned long BadNum;
};
void RangeError::PrintError()
{
cout << "Number out of range. You used " << GetNumber() << " !\n";
}
void fn1();
unsigned int * fn2();
void fn3(unsigned int *);
int main()
{
try
{
fn1();
}
catch (Exception& theException)
{
theException.PrintError();
}
return 0;
}
unsigned int * fn2()
{
unsigned int *n = new unsigned int;
if (n == 0)
throw OutOfMemory();
return n;
}
void fn1()
{
unsigned int *p = fn2();
fn3(p);
cout << "The number is : " << *p << endl;
delete p;
}
void fn3(unsigned int *p)
{
long Number;
cout << "Enter an integer(0~~1000): ";
cin >> Number;
if (Number > 1000 || Number < 0) throw
RangeError(Number);
*p = Number;
}

程序运行输出:

Enter an integer(0~~1000): 56

The number is : 56

Enter an integer(0~~1000): 2000

Number out of range. You used 2000 !



发表于 2018-04-18 20:31:54 回复(0)