一、填空题
(1)运行异常,可以 预料 ,但不能避免,它是由 系统运行环境 造成的。
(2)在小型程序开发中,一旦发生异常所采取的方法一般是 将程序立即中断运行,从而无条件释放所有资源 。
(3)C++的异常处理机制使得异常的引发和处理 不必 在同一函数中。
(4)如果预料某段程序(成对某个函数的调用)有可能发生异常,就将它放在 try语句块 中。
(5)如果某段程序中发现了自己不能处理的异常,就可以使用throw<表达式>抛掷这个异常,其中的<表达式>表示 异常类型 。
(6)如果异常类型声明是一个省略号(....),catch子句便处理 任何 类型的异常,这段处理程序必须是catch块的最后一段处理程序。
(7)异常接口声明也称为 抛出列表 ,已经成为函数界面的一部分。
(8)函数原型的抛出列表是一个空表,表示该函数 不抛出 任何类型的异常。
(9)为了使用异常类,需要包含相应的头文件。其中,异常基础类exception定义于
(10)在异常处理程序中发现异常,可以在 catch 语句中用throw语句抛出。
二、选择题(至少选一个,可以多选)D.在程序运行中,一旦发生异常,程序立即中断运行
(4)下列说法中错误的是( D )。
A.引发异常后,首先在引发异常的函数内部寻找异常处理过程
B. 抛出异常是没有任何危险的
C.“抛出异常”和“捕捉异常”两种操作最好放在同一个函数中
D.异常处理过程在处理完异常后,可以通过带有参数的throw继续传播异常
三、判断题
(1) try与catch总是结合使用的。 ( 对 )
(2)一个异常可以是除类以外的任何类型。 ( 错 )
(3)抛出异常后一定要马上终止程序。 ( 错 )
(4)异常接口定义的异常参数表为空,表示可以引发任何类型的异常。 ( 错 )
(5)C++标准库中不需要异常类,因为C++标准库中很少发生异常。 ( 错 )
五、程序分析题(分析程序,写出程序的输出结果)
#include
using namespace std;
class Nomilk
{
public:
Nomilk();
Nomilk(int how_many);
int get_money();
private:
int count;
};
int main()
{
int money,milk;
double dpg;
try
{
cout<<"Enter nunber of money;";
cin>>money;
cout<<"Enter nunber of glasses of milk:";
cin>>milk;
if(milk <=0)
throw Nomilk(money);
dpg= money/double(milk);
cout<< money<<"yuan"<< endl<
输入4 0组数的输出结果为: