首页 > 知识点讲解
       异常处理
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C++程序设计基础 > 
相关知识点:30个      
        异常(exception)是程序可能检测到的运行时刻不正常的情况,如new无法取得所需内存、除数为0、运算溢出、数组越界访问或函数参数无效等,这样的异常存在于程序的正常函数功能之外,但是要求程序立即处理。C++提供了一些内置的语言特性来产生并处理异常,以提高程序的容错能力,使程序更健壮。异常机制使一个函数可以在发现自己无法处理的错误时抛出一个异常,希望其调用者可以直接或者间接处理这个问题。
        传统的错误处理技术在检查到一个局部无法处理的问题时,常用以下方式:
        (1)终止程序。
        (2)返回一个表示错误的值。
        (3)返回一个合法值,让程序处于某种非法的状态。
        (4)调用一个预先准备好在出现“错误”的情况下的函数。
        第一种情况经常是不允许的,无条件终止程序的方式不适合应用到不能当机的程序中。第二种情况比较常用,但有时会带来不便,例如返回错误码是int型,每个调用都要检查错误值。第三种情况很容易误导调用者,如果调用者没有去检查表示错误码的全局变量或者通过其他方式检查错误,会造成无法预料的后果,这种方式在并发情况下也不能很好工作。第四种情况比较少用,而且回调的代码不该过多出现。
        C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。使用异常把错误和处理分开来,由库函数抛出异常,由调用者捕获这个异常,调用者就可以知道程序函数库调用出现错误并加以处理。
        try、catch、finally和throw是异常处理的关键字,它们配合起来工作。try内一般放入程序或函数的工作代码(出错时发生异常的代码),catch是程序发生异常后的出错处理代码,每个catch块指定捕获和处理一种异常,而finally块中则放着不论是否出错都需要处理的代码。throw用来声明函数可以抛出的异常和程序检测到出错时用来抛出一个异常对象。
        
        如果一个函数抛出一个异常,它必须假定该异常能被捕获和处理。在函数内抛出一个异常(或在函数调用时抛出一个异常)时,就退出函数的执行。如果不希望在异常抛出时退出函数,可在函数内创建一个特殊块用于解决实际程序中的问题,由于可通过它测试各种函数的调用,所以被称为测试块,由关键字try引导,如下所示:
        
        异常被抛出后,一旦被异常处理器接收到就被销毁。异常处理器由关键字catch引导,一般紧随在try块之后。
        如果一个异常信号被抛出,异常处理器中第一个参数与异常抛出对象相匹配的函数将捕获该异常信号,然后进入相应的catch语句,执行异常处理代码。
        函数的所有潜在异常类型随关键字throw插入在函数说明中。例如:
        
        而传统函数声明void f();意味着函数可能抛出任何一种异常。如果声明为void f() throw();,则意味着函数不会抛出异常。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有