《习题11及其解答(第二版)doc.doc》由会员分享,可在线阅读,更多相关《习题11及其解答(第二版)doc.doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第11章 异常处理习题1111.1阅读以下程序,写出执行结果1#include int a 10 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;int fun( int i );void main() int i ,s = 0; for( i = 0; i = 10; i+ ) try s = s + fun( i ) ; catch( int ) cout 数组下标越界! endl; cout s = s = 10 ) throw i ; return ai ;【答案】 数组下标越界! S=552#include void f();class T public: T()
2、cout constructor endl; try throw exception; catch( char * ) cout exception1 endl; throw exception; T() cout destructor; ;void main() cout main function endl; try f() ; catch( char * ) cout exception2 endl; cout main function endl; void f() T t; 【答案】main function constructor exception1 exception2 mai
3、n function11.2 思考题1 一个应用是否一定设计异常处理程序?异常处理的作用是什么?2什么叫抛出异常?catch可以获取什么异常参数?是根据异常参数的类型还是参数的值处理异常?请编写测试程序验证。3什么叫不唤醒机制?这种机制有什么好处?请举例说明。11.3 编程题1从键盘上输入x和y的值,计算y = ln( 2x y ) 的值,要求用异常处理“负数求对数的情况。【解答】#include #include double f( double x,double y );void main() double x,y;try cout x y; cout f( x,y ) endl; catch( char * ) cout 负数不能求对数! endl; double f( double x,double y ) if( 2*x y 0 ) throw error; else return log( 2*x - y );2程序中典型的异常有:内存不足以满足new的请求、数组下标越界、运算溢出、除数为0、无效函数参数等。简单描述程序应该如何用异常处理的方法处理这些情况。【解答】略。3.把本章列示的代码补充成完整的测试程序运行。【解答】略。