C#程序设计CPPCH0 (93).pdf
《C#程序设计CPPCH0 (93).pdf》由会员分享,可在线阅读,更多相关《C#程序设计CPPCH0 (93).pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2、异常处理的实现 3 1. 抛出异常 可以使用throw表达式抛出异常,将异常抛掷给主调函数去处理。 throw表达式的一般形式为: 异常通常以类似于实参传递给函数的方式(由throw)抛出和(被 catch)捕获,throw表达式的类型决定了所抛出的异常类型。 throw throw 表达式表达式; ; 4 由于C+是根据类型来区分不同的异常的,因此在抛出异常时, throw表达式的值没有实际意义,而表达式的类型则非常重要。如 果程序中有多处要抛出异常,应该用不同的表达式类型来相互区别。 if(test=0)if(test=0) throw throw test; test; /抛出抛出
2、intint型型异常异常 if(test=1)if(test=1) throw throw a; a; /抛出抛出charchar型型异常异常 if(test=2)if(test=2) throw throw 333.23; 333.23; /抛出抛出doubledouble型异常型异常 5 关于throw的说明: (1)执行throw的时候,不会执行跟在throw后面的语句,而是将 程序从throw转移到匹配的catch,该catch可以是同一函数中的 catch,也可以在直接或间接调用发生异常函数的上一级函数中。 (2)被抛出的对象是一个用throw表达式初始化的“异常对象”。异 常对象由
3、throw创建,并初始化为被抛出的表达式副本。异常对象 将传递给对应的catch,并在异常处理完成后撤销。因此异常对象 必须是可以复制的类型(具有复制构造函数)。 6 (3)如果抛出的是数组,被抛出的对象自动该转换为指向该数组 首元素的指针,如果抛出的是一个函数,函数被转换为指向该函数 的指针。 (4)如果抛出一个指针,该指针是一个指向派生类对象的基类指 针,则那个对象将被分割,只抛出基类的部分。 (5)抛出指向局部对象的指针总是错误的,因为抛出指针的时候, 必须确保进入异常处理程序时指针所指向的对象仍然存在。 7 2. 检测捕获异常 检测捕获异常的一般形式为: trytry /检测程序块(可
4、能抛出异常的代码)检测程序块(可能抛出异常的代码) catchcatch( (异常说明符异常说明符1) 1) /处理程序(当异常说明符处理程序(当异常说明符1 1被抛出时执行的程序)被抛出时执行的程序) catchcatch( (异常说明符异常说明符1) 1) /处理程序(处理程序(当异常说明符当异常说明符2 2被抛出时执行的程序被抛出时执行的程序) /更多的更多的catchcatch 8 一个try块可以紧跟一个或多个catch块。在try中执行程序块所抛出 的异常,通常会被其中的一个catch子句处理,一旦catch子句执行 结束,程序流程继续执行紧随最后一个catch子句后面的语句。 c
5、atch子句中的异常说明符是有一个形参的形参列表,有三种形式: catch(类型名) /catchcatch只需要了解异常的类型只需要了解异常的类型 catch(类型名 形参名) /catchcatch需要了解异常的类型之外的信息需要了解异常的类型之外的信息 catch() /捕获所有异常捕获所有异常 9 因为不可能知道可能被抛出的所有异常,这时使用catch()是非常 有效的。如果catch()与其他catch子句结合使用,那么它必须是最 后一个,否则任何跟在它后面的catch子句都得不到匹配检测。 trytry /欲检测可能发生异常的程序块欲检测可能发生异常的程序块 catchcatch(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#程序设计CPPCH0 93 C# 程序设计 CPPCH0 93
限制150内