科锐课堂笔记:2017/4/25 异常
来源:互联网 发布:php self this区别 编辑:程序博客网 时间:2024/06/06 02:19
在C语言里没有异常的语法支持,所有的错误判断都是通过检测返回值,配合goto(短跳,函数内)或setjmp、longjmp(长跳)转移代码流程,分离业务逻辑和错误处理。C编译器还定义了一个全局变量errno,保存着C库函数发生的最后一次错误代码(成功不会修改其值)。
C++新增了try、catch语法来用于异常处理,如果在try块中出现C++异常(用throw抛出,可以是基本类型也能是自定义类型),程序中断执行异常后的代码,转而查找与try匹配的各个catch()中参数类型相同的异常处理,catch(…)表示捕获所有异常类型。VC编译器把系统异常(如除0)也抛出捕获,Windows提供了一个默认异常处理,就是我们常见的弹出错误框,当查找不到匹配的异常处理便会执行windows默认异常。
C++标准模板库(ATL)抛出的异常类型是exception类。try块中可以再嵌套try、catch处理,内层没有匹配就继续逐层向外匹配,直至最外层。对try块中的类对象,编译器在生成throw代码里使用建表记录,从而正确析构这些局部对象,但如果是系统异常使用SEH机制则这些对象就不会被析构了。所以在windows下要么自己使用SEH,要么使用微软对针SEH设计的非标准语法__try、__except、__finally才会觉得游刃有余。
0 0
- 科锐课堂笔记:2017/4/25 异常
- [课堂笔记]五.异常
- 科锐课堂笔记:2017/4/4 初识C++
- 科锐课堂笔记:2017/4/5 输入输出
- 科锐课堂笔记:2017/4/18 类继承
- 科锐课堂笔记:2017/4/19 虚函数
- 科锐课堂笔记:2017/4/20 抽象类
- 科锐课堂笔记:2017/4/24 文件操作
- 科锐课堂笔记:2017/2/21 基础知识
- 科锐课堂笔记:2017/2/28 循环相关
- 科锐课堂笔记:2017/3/2 函数调用约定
- 科锐课堂笔记:2017/3/7 数组续篇
- 科锐课堂笔记:2017/3/9 静态变量
- 科锐课堂笔记:2017/3/14 指针
- 科锐课堂笔记:2017/3/17 结构体
- 科锐课堂笔记:2017/5/3 数据结构基本概念
- 科锐课堂笔记:2017/5/8 栈和队列
- 科锐课堂笔记:2017/5/9 树、二叉树
- EN300468标准 DVB系统的服务信息规范 最新文档下载
- JavaSE总结(一)
- lintcode(144)交错正负数
- thinkphp3.2 $Page->rollPage=5; //控制最大页码显示数
- session共享
- 科锐课堂笔记:2017/4/25 异常
- PLSQL的使用
- useradd和groupadd 详解
- 基础学习day07--broadcastReceiver
- 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
- Android开发集成微信分享
- [Python]面向对象编程---类、实例、方法的对比(4)
- hibernate获取session的两种方式分别是openSession() 方法和getCurrentSession() 方法。
- Construct Binary Tree from Preorder and Inorder Traversal 解题报告