- 0
- 0
- 约3.81千字
- 约 16页
- 2018-12-16 发布于福建
- 举报
嵌入式linux下c平程序设计09异常处理
嵌入式Linux下QT程序设计 主讲:成宝宗 主要内容: 异常处理机制 异常实现 异常执行过程 异常接口声明 异常处理中的构造与析构 异常处理的实现机制 抛掷异常的程序段 ...... throw 表达式; ...... 捕获并处理异常的程序段 try 复合语句 catch(异常类型声明) 复合语句 catch(异常类型声明) 复合语句 … 示例: #include iostream using namespace std; int fun(int x, int y){ //抛出异常 if (y == 0)throw y; return x/y; } int main(int argc, char *argv[]) { try{ //捕获异常 cout fun(34,5)endl; cout fun(4,0)endl; } catch(int){ //处理int异常 cout y == 0endl; } catch(...){ //处理所有异常 cout catch(...)endl; } } 异常处理的实现 异常处理的语法 1.throw语法 throw表达式; 当某段程序发现了自己不能处理的异常,就可以使用throw语句将这个异常抛掷给调用者。throw语句的使用与return语句相似,如果程序中有多处要抛掷异常,应该用不同的表达式类型来互相区别,表达式的值不能用来区别不同的异常。 异常处理的实现 2.try块语法 try { 复合语句 } try语句后的复合语句是代码的保护段。如果预料某段程序代码(或对某个函数的调用)有可能发生异常,就将它放在try语句之后。如果这段代码(或被调函数)运行时真的遇到异常情况,其中的throw表达式就会抛掷这个异常。 异常处理的实现 3.catch语法 catch(异常类型1参数1) { //针对异常类型1的处理语句 } catch(异常类型2参数2) { //针对异常类型2的处理语句 } ... catch(异常类型n参数n) { //针对异常类型n的处理语句 } catch语句后的复合语句是异常处理程序,捕获由throw表达式抛掷的异常。异常类型声明部分指明语句所处理的异常类型,它与函数的形参相类似,可以是某个类型的值,也可以是引用。这里的类型可以是任何有效的数据类型,包括C++的类。当异常被抛掷以后,catch语句便依次被检查。 异常处理的执行过程 异常处理的执行过程如下: ①控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。 ②如果在保护段执行期间没有引起异常,那么跟在try块后的catch语句就不执行,程序从异常被抛掷的try块后跟随的最后一个catch语句后面的语句继续执行下去。 异常处理的执行过程 ③如果在保护段执行期间或在保护段调用的任何函数中(直接或间接的调用)有异常被抛掷,则从通过throw创建的对象中创建一个异常对象(这隐含指可能包含一个拷贝构造函数)。 这一点上,编译器能够处理抛掷类型的异常,在更高执行上下文中寻找一个catch语句(或一个能处理任何类型异常的catch处理程序)。catch处理程序按其在try块后出现的顺序被检查。如果没有找到合适的处理程序,则继续检查下一个动态封闭的try块。此处理继续下去,直到最外层的封闭try块被检查完。 异常处理的执行过程 ④如果匹配的处理器未找到,则terminate()将被自动调用,而函数terminate()的默认功能是调用abort终止程序。 ⑤如果找到了一个匹配的catch处理程序,且它通过值进行捕获,则其形参通过拷贝异常对象进行初始化。如果它通过引用进行捕获,则参量被初始化为指向异常对象,在形参被初始化之后,“循环展开栈”的过程开始。这包括对那些在与catch处理器相对应的try块开始和异常丢弃地点之间创建的(但尚未析构的)所有自动对象的析构。 异常接口声明 为了加强程序的可读性,使用户能够方便地知道所使用的函数会抛掷哪些异常,可以在函数的声明中列出这个函数可能抛掷的所有异常类型。例如: voidfun()throw(A,B,C,D) 这表明函数throw()能够且只能够抛掷类型A、B、C、D的异常。 如果在函数的声明中没有包括异常接口声明,则此函数可以抛掷任何类型的异常。 例如: void fun(); 一个不抛掷任何类型异常的函数可以进行如
您可能关注的文档
- 平安福简易讲解方阳光法par.ppt
- 平安福溪水投保规则.ppt
- 平安文明校园荣幸建设工程方案介绍.ppt
- 平安世纪天使产说挠会40页2.ppt
- 平安系统常见问你好题处理.ppt
- 平安校园诶法制教育.ppt
- 平板双阵光束干涉.ppt
- 平安社区解决肥方案13国内渠道.ppt
- 平安校园爱慕解决方案.ppt
- 平等尊微笑重你我他.课件.ppt
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
最近下载
- 行政法与行政诉讼法期末考试试题及答案.pdf VIP
- 2026年抚州职业技术学院单招职业适应性测试题库含答案详解.docx VIP
- DnD_5E_新手套组_基础入门规则CN.pptx VIP
- 六年级道德与法治下册3《学会反思》.ppt VIP
- 2025年演出经纪人演出票务销售数据统计与透视表分析专题试卷及解析.pdf VIP
- 初级安检证试题及答案.pdf VIP
- 2026年抚州职业技术学院单招《数学》模拟试题【有一套】附答案详解.docx VIP
- 2024年计算机等级考试一级计算机基础及WPS Office应用试卷及解答参考.pdf VIP
- T_TFZX 59-2025 医疗机构医德医风考评指标体系指南.pdf VIP
- 遗传药理学大题库及答案.doc VIP
原创力文档

文档评论(0)