《异常处理C程序设计课件.ppt》由会员分享,可在线阅读,更多相关《异常处理C程序设计课件.ppt(6页珍藏版)》请在优知文库上搜索。
1、异常处理是程序设计中除调试之外的另一错误处理方法。异常处理与真正的错误处理其实是有一定的区别的,异常处理不但可以对系统错误做出反应,还可以对人为制造的错误做出反应并处理。抛出异常抛出异常当程序执行到某一函数或方法内部时,程序本身出现了一些异常,但这些异常并不能由系统所捕获,这时就可以创建一个错误信息,再由系统捕获该错误信息并处理。创建错误信息并发送这一过程称之为抛出异常。在C+中异常的抛出就是使用throw关键字来实现的,在这个关键字的后面可以跟随任何类型的值。异常捕获异常捕获异常捕获是指当一个异常被抛出时,不一定就在异常抛出的位置来处理这个异常,而是可以在别的地方通过捕获这个异常信息后再进行
2、处理。这样增加了程序结构的灵活性,也提高了异常处理的方便性。如果在函数内抛出一个异常(或在函数调用时抛出一个异常),将在异常抛出时退出函数。如果不想在异常抛出时退出函数,可在函数内创建一个特殊块用于解决实际程序中的问题。这个特殊的块由try关键字组成 Trycatch(type obj) 异常处理部分必须直接放在测试块之后。如果一个异常信号被抛出,异常处理器中第一个参数与异常抛出对象相匹配的函数将捕获该异常信号,然后进入相应的catch语句,执行异常处理程序。catch语句与switch语句不同,它不需要在每个case语句后加入break用以中断后面程序的执行。 异常匹配异常匹配当在程序中有异
3、常抛出时,异常处理系统会根据异常处理器的顺序找到最近的异常处理块,并不会搜索更多的异常处理块。异常匹配并不要求异常与异常处理器进行完美匹配,一个对象或一个派生类对象的引用将与基类处理器进行匹配。若抛出的是类对象的指针,则指针将会匹配相应的对象类型,但不会自动转换成其他对象的类型。 标准异常标准异常用于C+标准库的一些异常可以直接应用到程序中,应用标准异常类会比应用自定义异常类要简单容易的多。如果系统所提供的标准异常类并不能满足需要,不可以在这些标准异常类基础上进行派生 class logic_error; /逻辑错误,在程序运行前可以检测出来class domain_error; /违反了前置条件class invalid_argument; /指出函数的一个无效参数 class length_error; /超长class out_of_range; /参数越界class bad_cast; /在运行时类型识别中有一个无效的class bad_typeid; /报告在表达试typeid(*p)中有一个空指针pclass runtime_error; /运行时错误,仅在程序运行中检测到class range_error; /违反后置条件class overflow_error; /报告一个算术溢出class bad_alloc; /存储分配错误