编译器的设计与实现ppt课件6异常处理

编译器的设计与实现ppt课件6异常处理

ID:33501582

大小:164.00 KB

页数:59页

时间:2018-05-25

编译器的设计与实现ppt课件6异常处理_第1页
编译器的设计与实现ppt课件6异常处理_第2页
编译器的设计与实现ppt课件6异常处理_第3页
编译器的设计与实现ppt课件6异常处理_第4页
编译器的设计与实现ppt课件6异常处理_第5页
资源描述:

《编译器的设计与实现ppt课件6异常处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译器的设计与实现 ---异常处理制作:张云时间:2008-04内容目标什么是异常处理?异常处理模型的确立:终止模型?唤醒模型?…需要处理哪些情况?异常的表示:标准异常与异常层次结构异常的捕获异常的处理:Unwind设计与实现符号表的设计中间表示的设计目标代码生成异常处理目标:在前面的基础上增加对异常的支持以及能够进行异常处理问题:什么是异常处理?异常处理:一种错误处理方式Exceptionhandlingisaprogramminglanguageconstructorcomputerhardwaremechanismdesignedtohandletheoccurrenceof

2、someconditionthatchangesthenormalflowofexecution.传统的错误处理方式在函数中返回错误信息or设置一个全局的错误状态标志使用标准C库中的函数:signal()(用于推断事件发生时出现了什么情况)&raise()(产生一个事件)使用标准C库中的非局部跳转函数:setjmp()&longjmp()。使用setjmp()在程序中保存一个已知的无错误状态,一旦发生错误,就可以通过调用longjmp()返回到该状态。异常处理异常处理是C++的主要特征之一,是考虑问题和排除错误的一种更好的处理方式。使用异常处理:1)错误处理代码的编写不再冗长乏味,

3、并且不再与“正常的”代码混和在一起。2)错误不能被忽略。如果一个函数必须向调用者发送一条错误消息,它将”抛出”一个描述这个错误的对象。如果调用者没有“捕获”并处理它,错误对象将进入上一层封装的动态范围,并且一直持续下去,直到该错误被捕获or因为程序中没有异常处理器捕获这种类型的异常而导致程序终止。程序举例抛出异常classMyError{char*constdata;public:MyError(char*constmsg=0):data(msg){}};voidf(){//抛出异常throwMyError("somethingbadhappened");}intmain(){f(

4、);}捕获异常try块异常处理器捕获所有可能的异常try{//可能会产生异常的代码}catch(type1id1){//处理异常1}catch(type2id2){//处理异常2}catch(typeNidN)//处理异常N}catch(...){}//继续正常程序...异常匹配classExcept1{};classExcept2{public:Except2(constExcept1&){}};voidf(){throwExcept1();}intmain(){try{f();}catch(Except2&){cout<<"insidecatch(Except2)"<

5、;}catch(Except1&){cout<<"insidecatch(Except1)"<

6、。它在程序某处发出一个exception,被抛出的异常可以是内建类型,也可以是用户自定义类型。2一个try区域。它包含了一系列的语句,这些语句可能会引发异常。3一个或多个catch子句。每一个catch子句都是一个exceptionhandler。即,每个子句准备处理某种类型的异常,提供相应的处理程序。C++异常小结(cont.)当一个exception被抛出以后,控制权会从当前函数中释放出来,并寻找一个吻合的catch子句。如果没有吻合者,则调用默认的处理例程terminate()。找到匹配的catch以后,还需要进行相应的堆栈反解(unwindingthestack)。在这个过

7、程中,需要对函数中的localclassobjects进行析构。对ExceptionHandling的支持当一个exception发生时,编译系统需要做以下工作:1.检验发生throw操作的函数,构建抛出的异常对象;2.决定throw操作是否发生在try区域中;3.若是,需要把抛出的exception类型同每一个catch子句进行比较;4.如果匹配成功,流程控制交给catch子句中;5.如果throw的发生不在try区域中,或者没有一个catch子句吻合,那么系统将要

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。