知识屋:更实用的电脑技术知识网站
所在位置:首页 > 教育

C++的异常处理机制(一)

发表时间:2022-03-25来源:网络

目录

目录前言异常处理机制 异常处理的基本思想C的异常处理的实现 异常基本语法代码举例栈解旋异常接口说明总结

前言

在使用Qt的过程中,对于信号与槽,感觉定义返回值来判断程序出错好像没有用。我感觉信号与槽就是相当于中断处理程序似的,当信号发出的时候,会中断当前指向的程序,而转去执行槽函数,这样正文就无法执行了,相当于事件循环卡住了(主题偏了,不知道理解的对不对)。主要想如果在槽函数中有异常发生,是否可以有异常处理机制来对其进行处理呢?以此有了对C++的异常处理机制的学习!反正异常处理也算是C++中应该知道的部分。之后再看看Qt中有没有对槽函数异常处理的需要!!!
学习!分享!感谢!

异常处理机制

异常是一种程序控制机制,与函数机制独立和互补。函数是一种以栈结构展开的上下函数衔接的程序控制系统。异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作为捕获条件,从而以类型匹配在栈机制中跳跃回馈。
栈机制是一种高度节律性控制机制,面向对象编程却要求对象之间有方向/有目的的控制传动,从一开始,异常就是冲着改变程序控制结构,以适应面向对象程序更有效的工作这一主题,而不是为了进行错误处理

异常处理的基本思想

**传统的错误处理机制,通过函数返回值来处理错误。**C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样底层的函数可以着重解决具体问题,而不必过多的考虑异常的处理。上层调用者可以在适当的位置设计对不同类型异常的处理。
异常是专门针对抽象编程中的一系列错误处理的,C++中不能借助函数机制,因为栈结构的本质是先进后出,依次访问,无法进行跳跃,但错误处理的特征却是遇到错误信息就想要转到若干级之上进行重新尝试.如图所示:

异常超脱于函数机制,决定了其对函数的跨越式回跳。

C++的异常处理的实现

异常基本语法


1. 若有异常则通过throw操作创建一个异常对象并抛掷
2. 将可能抛出异常的程序段嵌在try块中。控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。
3. 如果在保护段执行期间没有引起异常,那么跟在try块后的catch子句就不执行。程序从try块后跟随的最后一个catch子句后面的语句继续执行下去。
4. catch子句按其在try块后出现的顺序被检查。匹配的catch子句将捕获并处理异常(或继续抛掷异常)。
5. 如果匹配的处理器为找到,则则运行函数terminate将被自动调用,其缺省功能是调用abort终止程序。
6. 处理不了的异常,可以在catch的最后一个分支,使用throw语法,向上扔。

代码举例

被0整除案例int divide(int x, int y ) { if (y ==0) { throw x; } return x/y; } void main() { try { cout
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜